private Response Send(Request request, bool responseAvailable) { using (var memoryStream = new BinaryMemoryStream()) { memoryStream.Writer.Write((short) request.RequestType); request.WriteToStream(memoryStream); var data = memoryStream.ToArray(); _socket.Send(data); } if (!responseAvailable) return null; var result = _socket.Recv(); using (var stream = new BinaryMemoryStream(result)) { var responseType = (ResponseType) stream.Reader.ReadInt16(); switch (responseType) { case ResponseType.BrokerInfoResponse: return BrokerInfoResponse.ReadFromStream(stream); case ResponseType.FetchResponse: return FetchResponse.ReadFromStream(stream); case ResponseType.MultiFetchResponse: return MultiFetchResponse.ReadFromStream(stream); } return null; } }
public Response Send(Request request) { return Send(request, true); }
public void Push(Request request) { Send(request, false); }