using System; using System.Runtime.Remoting.Messaging; namespace System.Runtime.Remoting.Contexts { // Token: 0x020003CD RID: 973 internal class SynchronizedContextReplySink : IMessageSink { // Token: 0x0600264E RID: 9806 RVA: 0x0007E560 File Offset: 0x0007C760 public SynchronizedContextReplySink(IMessageSink next, SynchronizationAttribute att, bool newLock) { this._newLock = newLock; this._next = next; this._att = att; } // Token: 0x17000729 RID: 1833 // (get) Token: 0x0600264F RID: 9807 RVA: 0x0007E580 File Offset: 0x0007C780 public IMessageSink NextSink { get { return this._next; } } // Token: 0x06002650 RID: 9808 RVA: 0x0007E588 File Offset: 0x0007C788 public IMessageCtrl AsyncProcessMessage(IMessage msg, IMessageSink replySink) { throw new NotSupportedException(); } // Token: 0x06002651 RID: 9809 RVA: 0x0007E590 File Offset: 0x0007C790 public IMessage SyncProcessMessage(IMessage msg) { if (this._newLock) { this._att.AcquireLock(); } else { this._att.ReleaseLock(); } IMessage message; try { message = this._next.SyncProcessMessage(msg); } finally { if (this._newLock) { this._att.ReleaseLock(); } } return message; } // Token: 0x04000EF0 RID: 3824 private IMessageSink _next; // Token: 0x04000EF1 RID: 3825 private bool _newLock; // Token: 0x04000EF2 RID: 3826 private SynchronizationAttribute _att; } }