public IMessage SyncProcessMessage(IMessage msg) { IMethodCallMessage mcall = msg as IMethodCallMessage; Trace.WriteLine("IceClientFormatterSink: ProcessMessage: " + mcall.MethodBase); try { Stream msgStream; FormatMessage(msg, out msgStream); // send downstream for processing TransportHeaders reqHeaders = new TransportHeaders(); ITransportHeaders respHeaders; Stream respStream; _next.ProcessMessage(msg, reqHeaders, msgStream, out respHeaders, out respStream); // convert back into a response message IMessage result = (IMessage)IceChannelUtils.ProtocolReplyToMessage(respStream, msg); respStream.Close(); return(result); } catch (Exception e) { return(new ReturnMessage(e, mcall)); } }
public void AsyncProcessResponse(IClientResponseChannelSinkStack sinkStack, object state, ITransportHeaders headers, Stream stream) { IMessage reqMessage = (IMessage)state; IMessage replyMessage = (IMessage)IceChannelUtils.ProtocolReplyToMessage(stream, reqMessage); stream.Close(); sinkStack.DispatchReplyMessage(replyMessage); }