Turn.Server.TurnServer.TurnServer_TurnDataReceived C# (CSharp) Method

TurnServer_TurnDataReceived() private method

private TurnServer_TurnDataReceived ( ServerAsyncEventArgs &e ) : void
e SocketServers.ServerAsyncEventArgs
return void
        private void TurnServer_TurnDataReceived(ref ServerAsyncEventArgs e)
        {
            //lock (syncRoot)
            {
                TurnMessage response = null;

                try
                {
                    if (true)//(TransactionServer.GetCachedResponse(e, out response) == false)
                    {
                        TurnMessage request = TurnMessage.Parse(e.Buffer, e.Offset, e.BytesTransferred, TurnMessageRfc.MsTurn);

                        if (Authentificater.Process(request, out response))
                        {
                            Allocation allocation = null;
                            if (request.MsSequenceNumber != null)
                                allocation = allocations.Get(request.MsSequenceNumber.ConnectionId);

                            if (allocation != null)
                            {
                                if (request.MsSequenceNumber != null)
                                    response = allocation.GetResponse(request.MsSequenceNumber.SequenceNumber);
                            }

                            if (response == null)
                            {
                                if (allocation != null)
                                    allocation.TouchLifetime();

                                switch (request.MessageType)
                                {
                                    case MessageType.AllocateRequest:
                                        response = ProcessAllocateRequest(ref allocation, request, e.LocalEndPoint, e.RemoteEndPoint);
                                        break;

                                    case MessageType.SendRequest:
                                        response = ProcessSendRequest(allocation, request, ref e);
                                        break;

                                    case MessageType.SetActiveDestinationRequest:
                                        response = ProcessSetActiveDestinationRequest(allocation, request, e.RemoteEndPoint);
                                        break;
                                }

                                if (allocation != null && response != null)
                                    allocation.SetResponse(response);
                            }
                        }

                        //TransactionServer.CacheResponse(e, response);
                    }
                }
                catch (TurnMessageException ex)
                {
                    response = GetErrorResponse(ex.ErrorCode, e);
                }
                catch (TurnServerException ex)
                {
                    response = GetErrorResponse(ex.ErrorCode, e);
                }
                catch (Exception ex)
                {
                    response = GetErrorResponse(ErrorCode.ServerError, e);

                    logger.WriteError(ex.ToString());
                }

                if (response != null)
                    SendTurn(response, e.LocalEndPoint, e.RemoteEndPoint);
            }
        }