59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|