using System; using System.Runtime.Remoting.Contexts; using System.Runtime.Remoting.Lifetime; using System.Runtime.Remoting.Messaging; namespace System.Runtime.Remoting { // Token: 0x02000451 RID: 1105 internal class SingletonIdentity : ServerIdentity { // Token: 0x06002AA3 RID: 10915 RVA: 0x0008A2D4 File Offset: 0x000884D4 public SingletonIdentity(string objectUri, Context context, Type objectType) : base(objectUri, context, objectType) { } // Token: 0x06002AA4 RID: 10916 RVA: 0x0008A2E0 File Offset: 0x000884E0 public MarshalByRefObject GetServerObject() { if (this._serverObject != null) { return this._serverObject; } lock (this) { if (this._serverObject == null) { MarshalByRefObject marshalByRefObject = (MarshalByRefObject)Activator.CreateInstance(this._objectType, true); base.AttachServerObject(marshalByRefObject, Context.DefaultContext); base.StartTrackingLifetime((ILease)marshalByRefObject.InitializeLifetimeService()); } } return this._serverObject; } // Token: 0x06002AA5 RID: 10917 RVA: 0x0008A370 File Offset: 0x00088570 public override IMessage SyncObjectProcessMessage(IMessage msg) { MarshalByRefObject serverObject = this.GetServerObject(); if (this._serverSink == null) { this._serverSink = this._context.CreateServerObjectSinkChain(serverObject, false); } return this._serverSink.SyncProcessMessage(msg); } // Token: 0x06002AA6 RID: 10918 RVA: 0x0008A3B0 File Offset: 0x000885B0 public override IMessageCtrl AsyncObjectProcessMessage(IMessage msg, IMessageSink replySink) { MarshalByRefObject serverObject = this.GetServerObject(); if (this._serverSink == null) { this._serverSink = this._context.CreateServerObjectSinkChain(serverObject, false); } return this._serverSink.AsyncProcessMessage(msg, replySink); } } }