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); } }
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(); } }