while (ReceiveOutMessage(&msg))
msg->Release();
}
+
+void Protocol::PurgeIn(int signal)
+{
+ Message *msg;
+ std::queue<Message*> msgs;
+
+ CSingleLock lock(criticalSection);
+
+ while (!inMessages.empty())
+ {
+ msg = inMessages.front();
+ inMessages.pop();
+ if (msg->signal != signal)
+ msgs.push(msg);
+ }
+ while (!msgs.empty())
+ {
+ msg = msgs.front();
+ msgs.pop();
+ inMessages.push(msg);
+ }
+}
+
+void Protocol::PurgeOut(int signal)
+{
+ Message *msg;
+ std::queue<Message*> msgs;
+
+ CSingleLock lock(criticalSection);
+
+ while (!outMessages.empty())
+ {
+ msg = outMessages.front();
+ outMessages.pop();
+ if (msg->signal != signal)
+ msgs.push(msg);
+ }
+ while (!msgs.empty())
+ {
+ msg = msgs.front();
+ msgs.pop();
+ outMessages.push(msg);
+ }
+}
bool ReceiveOutMessage(Message **msg);
bool ReceiveInMessage(Message **msg);
void Purge();
+ void PurgeIn(int signal);
+ void PurgeOut(int signal);
void DeferIn(bool value) {inDefered = value;};
void DeferOut(bool value) {outDefered = value;};
void Lock() {criticalSection.lock();};