internal virtual IMessageSink CreateServerObjectChain(MarshalByRefObject serverObj)
        {
            // a bare chain would just be the dispatcher sink
            IMessageSink serverObjectChain = new ServerObjectTerminatorSink(serverObj);

            // now loop over properties to add some real sinks.
            Object prop  = null;
            int    iSink = _numCtxProps;

            while (iSink-- > 0)
            {
                // see if this property wants to contribute a ServerObjectSink
                // we have to start chaining in the reverse order
                prop = _ctxProps[iSink];
                IContributeObjectSink sink = prop as IContributeObjectSink;
                if (null != sink)
                {
                    // yes, chain the sink ahead of the chain of sinks constructed so far.
                    serverObjectChain = sink.GetObjectSink(serverObj, serverObjectChain);
                    if (serverObjectChain == null)
                    {
                        throw new RemotingException(
                                  Environment.GetResourceString(
                                      "Remoting_Contexts_BadProperty"));
                    }
                }
            }
            return(serverObjectChain);
        }
Exemple #2
0
        internal virtual IMessageSink CreateServerObjectChain(MarshalByRefObject serverObj)
        {
            IMessageSink nextSink = (IMessageSink) new ServerObjectTerminatorSink(serverObj);
            int          index    = this._numCtxProps;

            while (index-- > 0)
            {
                IContributeObjectSink contributeObjectSink = this._ctxProps[index] as IContributeObjectSink;
                if (contributeObjectSink != null)
                {
                    nextSink = contributeObjectSink.GetObjectSink(serverObj, nextSink);
                    if (nextSink == null)
                    {
                        throw new RemotingException(Environment.GetResourceString("Remoting_Contexts_BadProperty"));
                    }
                }
            }
            return(nextSink);
        }
Exemple #3
0
        internal IMessageSink CreateServerObjectSinkChain(MarshalByRefObject obj, bool forceInternalExecute)
        {
            IMessageSink messageSink = new StackBuilderSink(obj, forceInternalExecute);

            messageSink = new ServerObjectTerminatorSink(messageSink);
            messageSink = new LeaseSink(messageSink);
            if (this.context_properties != null)
            {
                for (int i = this.context_properties.Count - 1; i >= 0; i--)
                {
                    IContextProperty      contextProperty      = (IContextProperty)this.context_properties[i];
                    IContributeObjectSink contributeObjectSink = contextProperty as IContributeObjectSink;
                    if (contributeObjectSink != null)
                    {
                        messageSink = contributeObjectSink.GetObjectSink(obj, messageSink);
                    }
                }
            }
            return(messageSink);
        }
        internal virtual IMessageSink CreateServerObjectChain(MarshalByRefObject serverObj)
        {
            IMessageSink messageSink = new ServerObjectTerminatorSink(serverObj);
            int          numCtxProps = this._numCtxProps;

            while (numCtxProps-- > 0)
            {
                object obj = this._ctxProps[numCtxProps];
                IContributeObjectSink contributeObjectSink = obj as IContributeObjectSink;
                if (contributeObjectSink != null)
                {
                    messageSink = contributeObjectSink.GetObjectSink(serverObj, messageSink);
                    if (messageSink == null)
                    {
                        throw new RemotingException(Environment.GetResourceString("Remoting_Contexts_BadProperty"));
                    }
                }
            }
            return(messageSink);
        }
Exemple #5
0
        internal IMessageSink CreateServerObjectSinkChain(MarshalByRefObject obj, bool forceInternalExecute)
        {
            IMessageSink objectSink = new StackBuilderSink(obj, forceInternalExecute);

            objectSink = new ServerObjectTerminatorSink(objectSink);
            objectSink = new Lifetime.LeaseSink(objectSink);

            if (context_properties != null)
            {
                // Contribute object sinks in reverse order
                for (int n = context_properties.Count - 1; n >= 0; n--)
                {
                    IContextProperty      prop        = (IContextProperty)context_properties[n];
                    IContributeObjectSink contributor = prop as IContributeObjectSink;
                    if (contributor != null)
                    {
                        objectSink = contributor.GetObjectSink(obj, objectSink);
                    }
                }
            }
            return(objectSink);
        }