private void ControlSocketReceive(IAsyncResult ar)
{
try
{
int bytesRead = _controlSocket.EndReceive(ar);
if (_controlSocketError == SocketError.Success)
{
_controlLastActivityAt = DateTime.Now;
if (bytesRead > 0)
{
OnControlDataReceived?.Invoke(_controlSocketBuffer.Take(bytesRead).ToArray());
}
_controlSocket.BeginReceive(_controlSocketBuffer, 0, _controlSocketBuffer.Length, SocketFlags.None, out _controlSocketError, ControlSocketReceive, null);
}
else
{
if (!_isClosed)
{
logger.Warn("A " + _controlSocketError + " occurred.");
OnControlSocketDisconnected?.Invoke();
}
}
}
catch (Exception excp)
{
if (!_isClosed)
{
logger.Error("Exception RTPChannel.ControlSocketReceive. " + excp);
OnControlSocketDisconnected?.Invoke();
}
}
}