Пример #1
0
        private void _ProcEstablishEvent(LPNetEvent netEvent)
        {
            LPSocker            socker         = null;
            LPEstablishNetEvent establishEvent = null;

            if (LOG_ERROR(netEvent != null))
            {
                goto Exit0;
            }

            establishEvent = (LPEstablishNetEvent)netEvent;
            socker         = establishEvent.Socker;

            if (socker.IsAcceptCreate)
            {
                m_NetMessageHandler.OnAccepted(socker);
            }
            else
            {
                m_NetMessageHandler.OnConnected(socker);
            }

            socker.PostRecv();

Exit0:
            return;
        }
Пример #2
0
        private void _ProcTerminateEvent(LPNetEvent netEvent)
        {
            LPSocker            socker         = null;
            LPConnector         connector      = null;
            LPTerminateNetEvent terminateEvent = null;

            if (LOG_ERROR(netEvent != null))
            {
                goto Exit0;
            }

            terminateEvent = (LPTerminateNetEvent)netEvent;
            socker         = terminateEvent.Socker;
            if (!socker.IsAcceptCreate)
            {
                connector = (LPConnector)socker.Parent;
                m_NetMessageHandler.OnConnectDisconnected(socker, connector);
            }
            else
            {
                m_NetMessageHandler.OnDisconnected(socker);
            }

            socker.OnClose();

Exit0:
            return;
        }
Пример #3
0
        private void _ProcRecvEvent(LPNetEvent netEvent)
        {
            bool           result    = false;
            LPRecvNetEvent recvEvent = null;

            if (LOG_ERROR(netEvent != null))
            {
                goto Exit0;
            }

            recvEvent = (LPRecvNetEvent)netEvent;
            if (LOG_ERROR(recvEvent.RecvLength < LP.MaxPacketLen))
            {
                goto Exit0;
            }

            result = m_EventBuf.Read(m_TempPacketBuf, 0, recvEvent.RecvLength, true);
            if (LOG_ERROR(result))
            {
                goto Exit0;
            }

            m_NetMessageHandler.OnMessage(recvEvent.Socker, m_TempPacketBuf, recvEvent.RecvLength);

Exit0:
            return;
        }
Пример #4
0
        private void _ProcConnectErrorEvent(LPNetEvent netEvent)
        {
            LPConnectErrorNetEvent connectErrorEvent = null;

            if (LOG_ERROR(netEvent != null))
            {
                goto Exit0;
            }
            connectErrorEvent = (LPConnectErrorNetEvent)netEvent;

            m_NetMessageHandler.OnConnectError(connectErrorEvent.Connector, connectErrorEvent.ErrorNo);
Exit0:
            return;
        }
Пример #5
0
 private void _FreeEvent(LPNetEvent netEvent)
 {
 }
Пример #6
0
        private LPNetEvent _CreateEvent(ENetEventType eType)
        {
            LPNetEvent netEvent = null;

            switch (eType)
            {
            case ENetEventType.Recv:
            {
                netEvent = new LPRecvNetEvent();
                if (LOG_ERROR(netEvent != null))
                {
                    goto Exit0;
                }
                netEvent.eType = ENetEventType.Recv;
            }
            break;

            case ENetEventType.Terminate:
            {
                netEvent = new LPTerminateNetEvent();
                if (LOG_ERROR(netEvent != null))
                {
                    goto Exit0;
                }
                netEvent.eType = ENetEventType.Terminate;
            }
            break;

            case ENetEventType.Establish:
            {
                netEvent = new LPEstablishNetEvent();
                if (LOG_ERROR(netEvent != null))
                {
                    goto Exit0;
                }
                netEvent.eType = ENetEventType.Establish;
            }
            break;

            case ENetEventType.ConnectError:
            {
                netEvent = new LPConnectErrorNetEvent();
                if (LOG_ERROR(netEvent != null))
                {
                    goto Exit0;
                }
                netEvent.eType = ENetEventType.ConnectError;
            }
            break;

            default:
                if (LOG_ERROR(false))
                {
                    goto Exit0;
                }
                break;
            }

            return(netEvent);

Exit0:
            return(null);
        }
Пример #7
0
        internal void HandleOneEvent()
        {
            LPNetEvent     netEvent = null;
            BASE_LIST_NODE node     = null;

            for (int i = 0; i < m_EventListCount; ++i)
            {
                if (m_EventLists[i].IsEmpty())
                {
                    continue;
                }

                lock (m_EventListLocker[i])
                {
                    node = m_EventLists[i].PopHead();
                    if (LOG_ERROR(node != null))
                    {
                        goto Exit0;
                    }

                    netEvent = (LPNetEvent)node.Data;
                    if (LOG_ERROR(netEvent != null))
                    {
                        goto Exit0;
                    }
                }

                switch (netEvent.eType)
                {
                case ENetEventType.Recv:
                {
                    _ProcRecvEvent(netEvent);
                }
                break;

                case ENetEventType.Terminate:
                {
                    _ProcTerminateEvent(netEvent);
                }
                break;

                case ENetEventType.Establish:
                {
                    _ProcEstablishEvent(netEvent);
                }
                break;

                case ENetEventType.ConnectError:
                {
                    _ProcConnectErrorEvent(netEvent);
                }
                break;

                default:
                    if (LOG_ERROR(false))
                    {
                        goto Exit0;
                    }
                    break;
                }
            }

Exit0:

            if (netEvent != null)
            {
                _FreeEvent(netEvent);
            }

            return;
        }