private void OnCleanup(object state)
{
// nothing to do if the channel is now open or closed.
lock (DataLock)
{
if (State == TcpChannelState.Closed || State == TcpChannelState.Open)
{
return;
}
}
// get reason for cleanup.
ServiceResult reason = state as ServiceResult;
if (reason == null)
{
reason = new ServiceResult(StatusCodes.BadTimeout);
}
Utils.Trace(
"TCPSERVERCHANNEL Cleanup Socket={0:X8}, ChannelId={1}, TokenId={2}, Reason={3}",
(Socket != null)?Socket.Handle:0,
(CurrentToken != null)?CurrentToken.ChannelId:0,
(CurrentToken != null)?CurrentToken.TokenId:0,
reason.ToLongString());
// close channel.
ChannelClosed();
}