Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/corlib/System.Runtime.Remoting/Identity.cs')
-rw-r--r--mcs/class/corlib/System.Runtime.Remoting/Identity.cs102
1 files changed, 102 insertions, 0 deletions
diff --git a/mcs/class/corlib/System.Runtime.Remoting/Identity.cs b/mcs/class/corlib/System.Runtime.Remoting/Identity.cs
new file mode 100644
index 00000000000..77dd3b194c5
--- /dev/null
+++ b/mcs/class/corlib/System.Runtime.Remoting/Identity.cs
@@ -0,0 +1,102 @@
+//
+// System.Runtime.Remoting.Identity.cs
+//
+// Author: Lluis Sanchez Gual (lluis@ideary.com)
+//
+// (C) 2002, Lluis Sanchez Gual
+//
+
+using System.Runtime.Remoting.Messaging;
+using System.Runtime.Remoting.Proxies;
+using System.Runtime.Remoting.Contexts;
+using System.Runtime.Remoting.Lifetime;
+
+namespace System.Runtime.Remoting
+{
+ internal abstract class Identity
+ {
+ // An Identity object holds remoting information about
+ // an object. It can be used to store client side information
+ // (information about how to reach the remote server),
+ // and also to store server side information (information
+ // about how to dispatch messages to the object in the server).
+
+ protected Type _objectType;
+
+ // URI of the object
+ protected string _objectUri;
+
+ // Message sink to use to send a message to the remote server
+ protected IMessageSink _channelSink = null;
+
+ protected IMessageSink _envoySink = null;
+
+ // The ObjRef
+ protected ObjRef _objRef;
+
+ public Identity(string objectUri, Type objectType)
+ {
+ _objectUri = objectUri;
+ _objectType = objectType;
+ }
+
+ public abstract ObjRef CreateObjRef (Type requestedType);
+
+ public bool IsFromThisAppDomain
+ {
+ get
+ {
+ return (_channelSink == null);
+ }
+ }
+
+ public IMessageSink ChannelSink
+ {
+ get { return _channelSink; }
+ set { _channelSink = value; }
+ }
+
+ public IMessageSink EnvoySink
+ {
+ get { return _envoySink; }
+ }
+
+ public Type ObjectType
+ {
+ get { return _objectType; }
+ }
+
+ public string ObjectUri
+ {
+ get { return _objectUri; }
+ set { _objectUri = value; }
+ }
+
+ public bool IsConnected
+ {
+ get { return _objectUri != null; }
+ }
+ }
+
+ internal class ClientIdentity : Identity
+ {
+ MarshalByRefObject _proxyObject;
+
+ public ClientIdentity (string objectUri, ObjRef objRef): base (objectUri, Type.GetType (objRef.TypeInfo.TypeName,true))
+ {
+ _objRef = objRef;
+ _envoySink = (_objRef.EnvoyInfo != null) ? _objRef.EnvoyInfo.EnvoySinks : null;
+ }
+
+ public MarshalByRefObject ClientProxy
+ {
+ get { return _proxyObject; }
+ set { _proxyObject = value; }
+ }
+
+ public override ObjRef CreateObjRef (Type requestedType)
+ {
+ return _objRef;
+ }
+ }
+}