/// <summary> /// Called when a <see cref="ServerUnboundMessage"/> is received. /// </summary> internal void ServerUnboundMessageReceived(ServerUnboundMessage message) { byte[] sessionId = message.GetSessionId(); if (NetGlobalChatSessionManager.TryRemove(sessionId, out NetGlobalChatSession session)) { session.Destruct(); } }
/// <summary> /// Called when a <see cref="AvatarEntryMessage"/> is received. /// </summary> internal void AvatarEntryMessageReceived(AvatarEntryMessage message) { byte[] sessionId = message.RemoveSessionId(); if (NetGlobalChatSessionManager.TryGet(sessionId, out NetGlobalChatSession session)) { message.RemoveAvatarEntry().CopyTo(session.AvatarEntry); } }
/// <summary> /// Called when a <see cref="UpdateServerEndPointMessage"/> is received. /// </summary> internal void UpdateServerEndPointMessageReceived(UpdateServerEndPointMessage message) { byte[] sessionId = message.RemoveSessionId(); if (NetGlobalChatSessionManager.TryGet(sessionId, out NetGlobalChatSession session)) { if (message.GetServerType() != ServiceCore.ServiceNodeType) { session.SetServiceNodeId(message.GetServerType(), message.GetServerId()); } } }
/// <summary> /// Called when a <see cref="ServerBoundMessage"/> is received. /// </summary> internal void ServerBoundMessageReceived(ServerBoundMessage message) { LogicLong accountId = message.RemoveAccountId(); if (!accountId.IsZero()) { NetGlobalChatSession session = NetGlobalChatSessionManager.Create(message.RemoveSessionId()); int[] ids = message.RemoveEndPoints(); for (int i = 0; i < 28; i++) { if (ids[i] != -1) { session.SetServiceNodeId(i, ids[i]); } } RoomManager.JoinRoom(session); } }
/// <summary> /// Called when a <see cref="ForwardPiranhaMessage"/> is received. /// </summary> internal void ForwardPiranhaMessageReceived(ForwardPiranhaMessage message) { byte[] sessionId = message.RemoveSessionId(); if (NetGlobalChatSessionManager.TryGet(sessionId, out NetGlobalChatSession session)) { PiranhaMessage piranhaMessage = message.RemovePiranhaMessage(); if (piranhaMessage != null) { try { piranhaMessage.Decode(); session.PiranhaMessageManager.ReceiveMessage(piranhaMessage); } catch (Exception exception) { Logging.Warning("NetChatMessageManager::forwardPiranhaMessageReceived piranha message handle exception, trace: " + exception); } } } }
/// <summary> /// Initializes the network part. /// </summary> internal static void InitNetwork() { NetGlobalChatSessionManager.Initialize(); }