Example #1
0
 [System.Security.SecurityCritical]  // auto-generated
 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;
 }
Example #2
0
File: Context.cs Project: psni/mono
		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;
		}
 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;
 }