public Object getResponse() { Message lm = request.GetMessage(requestor.Local); Message rm; if (!requestor.remoteProtocol.Messages.TryGetValue(request.GetMessage(requestor.Local).Name, out rm)) { throw new AvroRuntimeException ("Not a remote message: " + request.GetMessage(requestor.Local).Name); } Transceiver t = requestor.Transceiver; if ((lm.Oneway.GetValueOrDefault() != rm.Oneway.GetValueOrDefault()) && t.IsConnected) { throw new AvroRuntimeException ("Not both one-way messages: " + request.GetMessage(requestor.Local)); } if (lm.Oneway.GetValueOrDefault() && t.IsConnected) { return(null); // one-way w/ handshake } RpcContext context = request.Context; context.ResponseCallMeta = MetaReader.Read(null, input); if (!input.ReadBoolean()) { // no error Object response = requestor.ReadResponse(rm.Response, lm.Response, input); context.Response = response; return(response); } Exception error = requestor.ReadError(rm.SupportedErrors, lm.SupportedErrors, input); context.Error = error; throw error; }
private Message GetMessage(RpcRequest request) { return(request.GetMessage(Local)); }