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; } }