IAsyncResult IRequestReplyRouter.BeginProcessRequest(Message message, AsyncCallback callback, object state) { if (request_reply_channel != null) { throw new InvalidOperationException("Another async request operation is in progress"); } var sel = GetMatchingEndpoints(message); ServiceEndpoint se = null; foreach (var se_ in sel) { if (se != null) { throw new InvalidOperationException("Multiple endpoints cannot be specified for request-reply channel"); } se = se_; } if (se == null) { throw new InvalidOperationException("No service endpoint is registered to the request-reply channel"); } if (request_reply_factory == null) { request_reply_factory = new ChannelFactory <IRequestReplyRouter> (se); } request_reply_channel = request_reply_factory.CreateChannel(); return(request_reply_channel.BeginProcessRequest(message, null, null)); }
Message IRequestReplyRouter.EndProcessRequest(IAsyncResult result) { if (request_reply_channel == null) { throw new InvalidOperationException("Async request has not started"); } var ch = request_reply_channel; request_reply_channel = null; return(ch.EndProcessRequest(result)); }
Message IRequestReplyRouter.EndProcessRequest (IAsyncResult result) { if (request_reply_channel == null) throw new InvalidOperationException ("Async request has not started"); var ch = request_reply_channel; request_reply_channel = null; return ch.EndProcessRequest (result); }
IAsyncResult IRequestReplyRouter.BeginProcessRequest (Message message, AsyncCallback callback, object state) { if (request_reply_channel != null) throw new InvalidOperationException ("Another async request operation is in progress"); var sel = GetMatchingEndpoints (message); ServiceEndpoint se = null; foreach (var se_ in sel) { if (se != null) throw new InvalidOperationException ("Multiple endpoints cannot be specified for request-reply channel"); se = se_; } if (se == null) throw new InvalidOperationException ("No service endpoint is registered to the request-reply channel"); if (request_reply_factory == null) request_reply_factory = new ChannelFactory<IRequestReplyRouter> (se); request_reply_channel = request_reply_factory.CreateChannel (); return request_reply_channel.BeginProcessRequest (message, null, null); }