private void TransportSocketReader()
{
try
{
while (!_socket.Closed && !_socket.Closing)
{
byte[] tmpRead = new byte[8192];
int read;
try
{
read = _socket.Read(tmpRead, tmpRead.Length);
}
catch (ObjectDisposedException e)
{
break;
}
if (read > 0)
{
#if(DEBUG)
Logger.Debug("Read " + read + " bytes from transport socket, writing to upstream handler");
#endif
try
{
if (!ProcessTransportSocketRead(tmpRead, read))
{
Logger.Debug("Upstream handler failed to process the transport socket read data.");
break;
}
}
catch (Exception e)
{
Logger.Error("Writing to upstream handler failed, shutting down TcpConnection : " + e.Message, e);
break;
}
}
}
Logger.Info("Connection has been closed");
}
catch (Exception ex)
{
Logger.Error("Connection has failed : " + ex.Message);
}
finally
{
try
{
this.Close();
}
catch (Exception e)
{
Logger.Error("Error while closing ProxyConnection : " + e.Message, e);
}
}
}