using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.Remoting.Messaging;
namespace System.Runtime.Remoting.Channels
{
/// Provides methods used for security and transport sinks.
// Token: 0x020003AC RID: 940
[ComVisible(true)]
public interface IServerChannelSink : IChannelSinkBase
{
/// Gets the next server channel sink in the server sink chain.
/// The next server channel sink in the server sink chain.
/// The immediate caller does not have the required permission.
///
///
///
// Token: 0x1700070B RID: 1803
// (get) Token: 0x060025BA RID: 9658
IServerChannelSink NextChannelSink { get; }
/// Requests processing from the current sink of the response from a method call sent asynchronously.
/// A stack of sinks leading back to the server transport sink.
/// Information generated on the request side that is associated with this sink.
/// The response message.
/// The headers to add to the return message heading to the client.
/// The stream heading back to the transport sink.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025BB RID: 9659
void AsyncProcessResponse(IServerResponseChannelSinkStack sinkStack, object state, IMessage msg, ITransportHeaders headers, Stream stream);
/// Returns the onto which the provided response message is to be serialized.
/// The onto which the provided response message is to be serialized.
/// A stack of sinks leading back to the server transport sink.
/// The state that has been pushed to the stack by this sink.
/// The response message to serialize.
/// The headers to put in the response stream to the client.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025BC RID: 9660
Stream GetResponseStream(IServerResponseChannelSinkStack sinkStack, object state, IMessage msg, ITransportHeaders headers);
/// Requests message processing from the current sink.
/// A status value that provides information about how message was processed.
/// A stack of channel sinks that called the current sink.
/// The message that contains the request.
/// Headers retrieved from the incoming message from the client.
/// The stream that needs to be to processed and passed on to the deserialization sink.
/// When this method returns, contains a that holds the response message. This parameter is passed uninitialized.
/// When this method returns, contains a that holds the headers that are to be added to return message heading to the client. This parameter is passed uninitialized.
/// When this method returns, contains a that is heading back to the transport sink. This parameter is passed uninitialized.
/// The immediate caller does not have infrastructure permission.
// Token: 0x060025BD RID: 9661
ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, out IMessage responseMsg, out ITransportHeaders responseHeaders, out Stream responseStream);
}
}