Пример #1
0
        internal static ClientActivatedIdentity CreateContextBoundObjectIdentity(Type objectType)
        {
            ClientActivatedIdentity identity = new ClientActivatedIdentity(null, objectType);

            identity.ChannelSink = ChannelServices.CrossContextChannel;
            return(identity);
        }
Пример #2
0
        internal static ClientActivatedIdentity CreateClientActivatedServerIdentity(MarshalByRefObject realObject, Type objectType, string objectUri)
        {
            ClientActivatedIdentity identity = new ClientActivatedIdentity(objectUri, objectType);

            identity.AttachServerObject(realObject, Context.DefaultContext);
            RegisterServerIdentity(identity);
            identity.StartTrackingLifetime((ILease)realObject.InitializeLifetimeService());
            return(identity);
        }
Пример #3
0
        internal static ClientActivatedIdentity CreateContextBoundObjectIdentity(Type objectType)
        {
            ClientActivatedIdentity identity = new ClientActivatedIdentity(null, objectType);

                        #if !DISABLE_REMOTING
            identity.ChannelSink = ChannelServices.CrossContextChannel;
                        #endif
            return(identity);
        }
Пример #4
0
        // This method is called by the runtime
        internal static object GetServerObject(string uri)
        {
            ClientActivatedIdentity identity = GetIdentityForUri(uri) as ClientActivatedIdentity;

            if (identity == null)
            {
                throw new RemotingException("Server for uri '" + uri + "' not found");
            }
            return(identity.GetServerObject());
        }
Пример #5
0
        internal static object GetProxyForRemoteObject(ObjRef objref, Type classToProxy)
        {
            ClientActivatedIdentity identity = GetIdentityForUri(objref.URI) as ClientActivatedIdentity;

            if (identity != null)
            {
                return(identity.GetServerObject());
            }
            else
            {
                return(GetRemoteObject(objref, classToProxy));
            }
        }
Пример #6
0
        public static ObjRef Marshal(MarshalByRefObject Obj, string ObjURI, Type RequestedType)
        {
            if (IsTransparentProxy(Obj))
            {
                RealProxy proxy    = RemotingServices.GetRealProxy(Obj);
                Identity  identity = proxy.ObjectIdentity;

                if (identity != null)
                {
                    if (proxy.GetProxiedType().IsContextful&& !identity.IsConnected)
                    {
                        // Unregistered local contextbound object. Register now.
                        ClientActivatedIdentity cboundIdentity = (ClientActivatedIdentity)identity;
                        if (ObjURI == null)
                        {
                            ObjURI = NewUri();
                        }
                        cboundIdentity.ObjectUri = ObjURI;
                        RegisterServerIdentity(cboundIdentity);
                        cboundIdentity.StartTrackingLifetime((ILease)Obj.InitializeLifetimeService());
                        return(cboundIdentity.CreateObjRef(RequestedType));
                    }
                    else if (ObjURI != null)
                    {
                        throw new RemotingException("It is not possible marshal a proxy of a remote object.");
                    }

                    ObjRef or = proxy.ObjectIdentity.CreateObjRef(RequestedType);
                    TrackingServices.NotifyMarshaledObject(Obj, or);
                    return(or);
                }
            }

            if (RequestedType == null)
            {
                RequestedType = Obj.GetType();
            }

            if (ObjURI == null)
            {
                if (Obj.ObjectIdentity == null)
                {
                    ObjURI = NewUri();
                    CreateClientActivatedServerIdentity(Obj, RequestedType, ObjURI);
                }
            }
            else
            {
                ClientActivatedIdentity identity = GetIdentityForUri("/" + ObjURI) as ClientActivatedIdentity;
                if (identity == null || Obj != identity.GetServerObject())
                {
                    CreateClientActivatedServerIdentity(Obj, RequestedType, ObjURI);
                }
            }

            ObjRef oref;

            if (IsTransparentProxy(Obj))
            {
                oref = RemotingServices.GetRealProxy(Obj).ObjectIdentity.CreateObjRef(RequestedType);
            }
            else
            {
                oref = Obj.CreateObjRef(RequestedType);
            }

            TrackingServices.NotifyMarshaledObject(Obj, oref);
            return(oref);
        }
Пример #7
0
		internal static ClientActivatedIdentity CreateClientActivatedServerIdentity(MarshalByRefObject realObject, Type objectType, string objectUri)
		{
			ClientActivatedIdentity identity = new ClientActivatedIdentity (objectUri, objectType);
			identity.AttachServerObject (realObject, Context.DefaultContext);
			RegisterServerIdentity (identity);
			identity.StartTrackingLifetime ((ILease)realObject.InitializeLifetimeService ());
			return identity;
		}
Пример #8
0
		internal static ClientActivatedIdentity CreateContextBoundObjectIdentity(Type objectType)
		{
			ClientActivatedIdentity identity = new ClientActivatedIdentity (null, objectType);
			identity.ChannelSink = ChannelServices.CrossContextChannel;
			return identity;
		}