using System; using System.Runtime.Remoting.Messaging; namespace System.Runtime.Remoting.Contexts { // Token: 0x020003CB RID: 971 internal class SynchronizedClientContextSink : IMessageSink { // Token: 0x06002646 RID: 9798 RVA: 0x0007E3E0 File Offset: 0x0007C5E0 public SynchronizedClientContextSink(IMessageSink next, SynchronizationAttribute att) { this._att = att; this._next = next; } // Token: 0x17000727 RID: 1831 // (get) Token: 0x06002647 RID: 9799 RVA: 0x0007E3F8 File Offset: 0x0007C5F8 public IMessageSink NextSink { get { return this._next; } } // Token: 0x06002648 RID: 9800 RVA: 0x0007E400 File Offset: 0x0007C600 public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { if (this._att.IsReEntrant) { this._att.ReleaseLock(); replySink = new SynchronizedContextReplySink(replySink, this._att, true); } return this._next.AsyncProcessMessage(msg, replySink); } // Token: 0x06002649 RID: 9801 RVA: 0x0007E444 File Offset: 0x0007C644 public IMessage SyncProcessMessage(IMessage msg) { if (this._att.IsReEntrant) { this._att.ReleaseLock(); } IMessage message; try { message = this._next.SyncProcessMessage(msg); } finally { if (this._att.IsReEntrant) { this._att.AcquireLock(); } } return message; } // Token: 0x04000EEC RID: 3820 private IMessageSink _next; // Token: 0x04000EED RID: 3821 private SynchronizationAttribute _att; } }