public bool Read()
{
try
{
if (socket_.Poll(1000000, SelectMode.SelectRead)) // one-second timeout
{
int bytesRead = socket_.Receive(readBuffer_);
if (0 == bytesRead)
throw new SocketException(System.Convert.ToInt32(SocketError.ConnectionReset));
parser_.AddToStream(System.Text.Encoding.UTF8.GetString(readBuffer_, 0, bytesRead));
}
else if (null != session_)
{
session_.Next();
}
else
{
throw new QuickFIXException("Initiator timed out while reading socket");
}
ProcessStream();
return true;
}
catch (System.Exception e)
{
if (null != session_)
session_.Disconnect(e.Message);
else
Disconnect();
return false;
}
}