161 lines
4.0 KiB
C#
161 lines
4.0 KiB
C#
using System;
|
|
using System.Runtime.Remoting.Contexts;
|
|
using System.Runtime.Remoting.Lifetime;
|
|
using System.Runtime.Remoting.Messaging;
|
|
using System.Runtime.Remoting.Proxies;
|
|
using System.Runtime.Remoting.Services;
|
|
|
|
namespace System.Runtime.Remoting
|
|
{
|
|
// Token: 0x0200044F RID: 1103
|
|
internal abstract class ServerIdentity : Identity
|
|
{
|
|
// Token: 0x06002A90 RID: 10896 RVA: 0x0008A004 File Offset: 0x00088204
|
|
public ServerIdentity(string objectUri, Context context, Type objectType)
|
|
: base(objectUri)
|
|
{
|
|
this._objectType = objectType;
|
|
this._context = context;
|
|
}
|
|
|
|
// Token: 0x17000862 RID: 2146
|
|
// (get) Token: 0x06002A91 RID: 10897 RVA: 0x0008A01C File Offset: 0x0008821C
|
|
public Type ObjectType
|
|
{
|
|
get
|
|
{
|
|
return this._objectType;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002A92 RID: 10898 RVA: 0x0008A024 File Offset: 0x00088224
|
|
public void StartTrackingLifetime(ILease lease)
|
|
{
|
|
if (lease != null && lease.CurrentState == LeaseState.Null)
|
|
{
|
|
lease = null;
|
|
}
|
|
if (lease != null)
|
|
{
|
|
if (!(lease is Lease))
|
|
{
|
|
lease = new Lease();
|
|
}
|
|
this._lease = (Lease)lease;
|
|
LifetimeServices.TrackLifetime(this);
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002A93 RID: 10899 RVA: 0x0008A070 File Offset: 0x00088270
|
|
public virtual void OnLifetimeExpired()
|
|
{
|
|
this.DisposeServerObject();
|
|
}
|
|
|
|
// Token: 0x06002A94 RID: 10900 RVA: 0x0008A078 File Offset: 0x00088278
|
|
public override ObjRef CreateObjRef(Type requestedType)
|
|
{
|
|
if (this._objRef != null)
|
|
{
|
|
this._objRef.UpdateChannelInfo();
|
|
return this._objRef;
|
|
}
|
|
if (requestedType == null)
|
|
{
|
|
requestedType = this._objectType;
|
|
}
|
|
this._objRef = new ObjRef();
|
|
this._objRef.TypeInfo = new TypeInfo(requestedType);
|
|
this._objRef.URI = this._objectUri;
|
|
if (this._envoySink != null && !(this._envoySink is EnvoyTerminatorSink))
|
|
{
|
|
this._objRef.EnvoyInfo = new EnvoyInfo(this._envoySink);
|
|
}
|
|
return this._objRef;
|
|
}
|
|
|
|
// Token: 0x06002A95 RID: 10901 RVA: 0x0008A114 File Offset: 0x00088314
|
|
public void AttachServerObject(MarshalByRefObject serverObject, Context context)
|
|
{
|
|
this.DisposeServerObject();
|
|
this._context = context;
|
|
this._serverObject = serverObject;
|
|
if (RemotingServices.IsTransparentProxy(serverObject))
|
|
{
|
|
RealProxy realProxy = RemotingServices.GetRealProxy(serverObject);
|
|
if (realProxy.ObjectIdentity == null)
|
|
{
|
|
realProxy.ObjectIdentity = this;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (this._objectType.IsContextful)
|
|
{
|
|
this._envoySink = context.CreateEnvoySink(serverObject);
|
|
}
|
|
this._serverObject.ObjectIdentity = this;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000863 RID: 2147
|
|
// (get) Token: 0x06002A96 RID: 10902 RVA: 0x0008A188 File Offset: 0x00088388
|
|
public Lease Lease
|
|
{
|
|
get
|
|
{
|
|
return this._lease;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17000864 RID: 2148
|
|
// (get) Token: 0x06002A97 RID: 10903 RVA: 0x0008A190 File Offset: 0x00088390
|
|
// (set) Token: 0x06002A98 RID: 10904 RVA: 0x0008A198 File Offset: 0x00088398
|
|
public Context Context
|
|
{
|
|
get
|
|
{
|
|
return this._context;
|
|
}
|
|
set
|
|
{
|
|
this._context = value;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06002A99 RID: 10905
|
|
public abstract IMessage SyncObjectProcessMessage(IMessage msg);
|
|
|
|
// Token: 0x06002A9A RID: 10906
|
|
public abstract IMessageCtrl AsyncObjectProcessMessage(IMessage msg, IMessageSink replySink);
|
|
|
|
// Token: 0x06002A9B RID: 10907 RVA: 0x0008A1A4 File Offset: 0x000883A4
|
|
protected void DisposeServerObject()
|
|
{
|
|
if (this._serverObject != null)
|
|
{
|
|
MarshalByRefObject serverObject = this._serverObject;
|
|
this._serverObject.ObjectIdentity = null;
|
|
this._serverObject = null;
|
|
this._serverSink = null;
|
|
TrackingServices.NotifyDisconnectedObject(serverObject);
|
|
}
|
|
}
|
|
|
|
// Token: 0x0400104B RID: 4171
|
|
protected Type _objectType;
|
|
|
|
// Token: 0x0400104C RID: 4172
|
|
protected MarshalByRefObject _serverObject;
|
|
|
|
// Token: 0x0400104D RID: 4173
|
|
protected IMessageSink _serverSink;
|
|
|
|
// Token: 0x0400104E RID: 4174
|
|
protected Context _context;
|
|
|
|
// Token: 0x0400104F RID: 4175
|
|
protected Lease _lease;
|
|
}
|
|
}
|