public IMessage SyncProcessMessage(IMessage msg) { if (_att.IsReEntrant) { _att.ReleaseLock(); // Unlock when leaving the context } try { return(_next.SyncProcessMessage(msg)); } finally { if (_att.IsReEntrant) { _att.AcquireLock(); } } }
public IMessage SyncProcessMessage(IMessage msg) { if (_newLock) { _att.AcquireLock(); } else { _att.ReleaseLock(); } try { return(_next.SyncProcessMessage(msg)); } finally { if (_newLock) { _att.ReleaseLock(); } } }
public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { _att.AcquireLock(); replySink = new SynchronizedContextReplySink(replySink, _att, false); return(_next.AsyncProcessMessage(msg, replySink)); }