Пример #1
0
        internal int GetServerDomainId()
        {
            if (!this.IsFromThisProcess())
            {
                return(0);
            }
            CrossAppDomainData appDomainChannelData = this.GetAppDomainChannelData();

            return(appDomainChannelData.DomainID);
        }
Пример #2
0
        public bool IsFromThisAppDomain()
        {
            CrossAppDomainData xadData = GetAppDomainChannelData();

            if (xadData != null)
            {
                return(xadData.IsFromThisAppDomain());
            }
            return(false);
        }
Пример #3
0
        public bool IsFromThisProcess()
        {
            if (this.IsWellKnown())
            {
                return(false);
            }
            CrossAppDomainData appDomainChannelData = this.GetAppDomainChannelData();

            return(appDomainChannelData != null && appDomainChannelData.IsFromThisProcess());
        }
Пример #4
0
        internal Int32 GetServerDomainId()
        {
            if (!IsFromThisProcess())
            {
                return(0);
            }
            CrossAppDomainData xadData = GetAppDomainChannelData();

            BCLDebug.Assert(xadData != null, "bad objRef?");
            return(xadData.DomainID);
        }
Пример #5
0
 private CrossAppDomainData GetAppDomainChannelData()
 {
     for (int i = 0; i < this.ChannelInfo.ChannelData.Length; i++)
     {
         CrossAppDomainData crossAppDomainData = this.ChannelInfo.ChannelData[i] as CrossAppDomainData;
         if (crossAppDomainData != null)
         {
             return(crossAppDomainData);
         }
     }
     return(null);
 }
Пример #6
0
        private CrossAppDomainData GetAppDomainChannelData()
        {
            int index = 0;

            for (; index < this.ChannelInfo.ChannelData.Length; ++index)
            {
                CrossAppDomainData crossAppDomainData = this.ChannelInfo.ChannelData[index] as CrossAppDomainData;
                if (crossAppDomainData != null)
                {
                    return(crossAppDomainData);
                }
            }
            return((CrossAppDomainData)null);
        }
Пример #7
0
        internal TransitionCall(IntPtr targetCtxID, IntPtr eeData, int targetDomainID)
        {
            this._sourceCtxID    = Thread.CurrentContext.InternalContextID;
            this._targetCtxID    = targetCtxID;
            this._delegate       = null;
            this._targetDomainID = targetDomainID;
            this._eeData         = eeData;
            this._srvID          = null;
            this._ID             = new Identity("TransitionCallURI", null);
            CrossAppDomainData data = new CrossAppDomainData(this._targetCtxID, this._targetDomainID, Identity.ProcessGuid);
            string             text;
            IMessageSink       channelSink = CrossAppDomainChannel.AppDomainChannel.CreateMessageSink(null, data, out text);

            this._ID.RaceSetChannelSink(channelSink);
        }
Пример #8
0
        internal IntPtr GetServerContext(out int domainId)
        {
            IntPtr result = IntPtr.Zero;

            domainId = 0;
            if (this.IsFromThisProcess())
            {
                CrossAppDomainData appDomainChannelData = this.GetAppDomainChannelData();
                domainId = appDomainChannelData.DomainID;
                if (AppDomain.IsDomainIdValid(appDomainChannelData.DomainID))
                {
                    result = appDomainChannelData.ContextID;
                }
            }
            return(result);
        }
Пример #9
0
        internal IntPtr GetServerContext(out int domainId)
        {
            IntPtr num = IntPtr.Zero;

            domainId = 0;
            if (this.IsFromThisProcess())
            {
                CrossAppDomainData domainChannelData = this.GetAppDomainChannelData();
                domainId = domainChannelData.DomainID;
                if (AppDomain.IsDomainIdValid(domainChannelData.DomainID))
                {
                    num = domainChannelData.ContextID;
                }
            }
            return(num);
        }
Пример #10
0
        private CrossAppDomainData GetAppDomainChannelData()
        {
            int index = 0;
            CrossAppDomainData data = null;

            while (index < this.ChannelInfo.ChannelData.Length)
            {
                data = this.ChannelInfo.ChannelData[index] as CrossAppDomainData;
                if (data != null)
                {
                    return(data);
                }
                index++;
            }
            return(null);
        }
Пример #11
0
        internal IntPtr GetServerContext(out int domainId)
        {
            IntPtr contextId = IntPtr.Zero;

            domainId = 0;
            if (IsFromThisProcess())
            {
                CrossAppDomainData xadData = GetAppDomainChannelData();
                BCLDebug.Assert(xadData != null, "bad objRef?");
                domainId = xadData.DomainID;
                if (AppDomain.IsDomainIdValid(xadData.DomainID))
                {
                    contextId = xadData.ContextID;
                }
            }
            return(contextId);
        }
Пример #12
0
        public bool IsFromThisProcess()
        {
            //Wellknown objects may or may not be in the same process
            //Hence return false;
            if (IsWellKnown())
            {
                return(false);
            }

            CrossAppDomainData xadData = GetAppDomainChannelData();

            if (xadData != null)
            {
                return(xadData.IsFromThisProcess());
            }
            return(false);
        }
Пример #13
0
        private CrossAppDomainData GetAppDomainChannelData()
        {
            BCLDebug.Assert(
                ObjRef.IsWellFormed(this),
                "ObjRef.IsWellFormed()");

            // Look at the ChannelData part to find CrossAppDomainData
            int i = 0;
            CrossAppDomainData xadData = null;

            while (i < ChannelInfo.ChannelData.Length)
            {
                xadData = ChannelInfo.ChannelData[i] as CrossAppDomainData;
                if (null != xadData)
                {
                    return(xadData);
                }
                i++;
            }

            // AdData could be null for user-created objRefs.
            return(null);
        }
Пример #14
0
        public bool IsFromThisAppDomain()
        {
            CrossAppDomainData appDomainChannelData = this.GetAppDomainChannelData();

            return(appDomainChannelData != null && appDomainChannelData.IsFromThisAppDomain());
        }
Пример #15
0
        [System.Security.SecurityCritical]  // auto-generated 
        internal TransitionCall(IntPtr targetCtxID, IntPtr eeData, int targetDomainID)
            { 
            Contract.Assert(targetCtxID != IntPtr.Zero, "bad target ctx for call back"); 
            Contract.Assert(targetDomainID !=0, "bad target ctx for call back");
 
            _sourceCtxID = Thread.CurrentContext.InternalContextID;
            _targetCtxID = targetCtxID;
            _delegate = null;
            _targetDomainID = targetDomainID; 
            _eeData = eeData;
 
 
            // In the cross domain case, the client side just has a base Identity
            // and the server domain has the Server identity. We fault in the latter 
            // when requested later.

            // We are going to a context in another app domain
            _srvID = null; 
            _ID = new Identity("TransitionCallURI", null);
 
                // Create the data needed for the channel sink creation 
            CrossAppDomainData data =
                new CrossAppDomainData(_targetCtxID, 
                    _targetDomainID,
                    Identity.ProcessGuid);
            String unUsed;
            IMessageSink channelSink = 
            CrossAppDomainChannel.AppDomainChannel.CreateMessageSink(
                null, //uri 
                data, //channelData 
                out unUsed);//out objURI
 
            Contract.Assert(channelSink != null, "X-domain transition failure");
            _ID.RaceSetChannelSink(channelSink);
        } // TransitionCall