private void OnReadComplete(object sender, SocketAsyncEventArgs e)
{
lock (m_readLock)
{
ServiceResult error = null;
try
{
error = DoReadComplete(e);
}
catch (Exception ex)
{
Utils.Trace(ex, "Unexpected error during OnReadComplete,");
error = ServiceResult.Create(ex, StatusCodes.BadTcpInternalError, ex.Message);
}
finally
{
e.Dispose();
}
if (ServiceResult.IsBad(error))
{
if (m_receiveBuffer != null)
{
m_bufferManager.ReturnBuffer(m_receiveBuffer, "OnReadComplete");
m_receiveBuffer = null;
}
if (m_sink != null)
{
m_sink.OnReceiveError(this, error);
}
}
}
}