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); }
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); }
internal virtual IMessageSink CreateServerObjectChain(MarshalByRefObject serverObj) { IMessageSink nextSink = new ServerObjectTerminatorSink(serverObj); object obj2 = null; int index = this._numCtxProps; while (index-- > 0) { obj2 = this._ctxProps[index]; IContributeObjectSink sink2 = obj2 as IContributeObjectSink; if (sink2 != null) { nextSink = sink2.GetObjectSink(serverObj, nextSink); if (nextSink == null) { throw new RemotingException(Environment.GetResourceString("Remoting_Contexts_BadProperty")); } } } return(nextSink); }
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); }