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