Ejemplo n.º 1
0
            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;
            }
Ejemplo n.º 2
0
 private Message GetMessage(RpcRequest request)
 {
     return(request.GetMessage(Local));
 }