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; }
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; }
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; }
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; }
private void _FreeEvent(LPNetEvent netEvent) { }
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); }
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; }