示例#1
0
 protected override int Read(ref Request request, byte[] data, int offset, int length)
 {
     try {
         Schema.KRPC.MultiplexedRequest multiplexedRequest = null;
         int read = ProtocolBuffers.Utils.ReadMessage(
             ref multiplexedRequest, Schema.KRPC.MultiplexedRequest.Parser, data, offset, length);
         if (read == 0)
         {
             return(read);
         }
         if (multiplexedRequest.ConnectionRequest != null)
         {
             var bufferedData = new byte[length];
             Array.Copy(data, offset, bufferedData, 0, length);
             ((ByteServer)server).ClientConnectionRequest(bufferedData);
             throw new ClientDisconnectedException();
         }
         request = multiplexedRequest.Request.ToMessage();
         return(read);
     } catch (System.InvalidOperationException e) {
         throw new MalformedRequestException(e.Message);
     } catch (InvalidProtocolBufferException e) {
         throw new MalformedRequestException(e.Message);
     }
 }
示例#2
0
        public void SetUp()
        {
            // Create a request object and get the binary representation of it
            expectedRequest         = new Schema.KRPC.MultiplexedRequest();
            expectedRequest.Request = new Schema.KRPC.Request();
            expectedRequest.Request.Calls.Add(
                new Schema.KRPC.ProcedureCall {
                Service   = "TestService",
                Procedure = "ProcedureNoArgsNoReturn"
            });
            using (var stream = new MemoryStream()) {
                var codedStream = new CodedOutputStream(stream, true);
                codedStream.WriteMessage(expectedRequest);
                codedStream.Flush();
                requestBytes = stream.ToArray();
            }

            // Create a response object and get the binary representation of it
            expectedResponseMessage       = new Response();
            expectedResponseMessage.Error = new Error("SomeErrorMessage", "StackTrace");
            expectedResponse          = new Schema.KRPC.MultiplexedResponse();
            expectedResponse.Response = expectedResponseMessage.ToProtobufMessage();
            using (var stream = new MemoryStream()) {
                var codedStream = new CodedOutputStream(stream, true);
                codedStream.WriteMessage(expectedResponse);
                codedStream.Flush();
                responseBytes = stream.ToArray();
            }
        }