/// <summary> /// Forwards the specified <see cref="PiranhaMessage"/> to the service. /// </summary> public void SendPiranhaMessage(int serviceNodeType, PiranhaMessage message) { NetSocket socket = this._serviceNodeSockets[serviceNodeType]; if (socket != null) { if (message.GetEncodingLength() == 0) { message.Encode(); } ForwardPiranhaMessage forwardPiranhaMessage = new ForwardPiranhaMessage(); forwardPiranhaMessage.SetPiranhaMessage(message); NetMessageManager.SendMessage(socket, this.SessionId, forwardPiranhaMessage); } }
/// <summary> /// Called when a <see cref="ForwardPiranhaMessage"/> is received. /// </summary> internal void ForwardPiranhaMessageReceived(ForwardPiranhaMessage message) { byte[] sessionId = message.RemoveSessionId(); if (NetAvatarSessionManager.TryGet(sessionId, out NetAvatarSession session)) { PiranhaMessage piranhaMessage = message.RemovePiranhaMessage(); if (piranhaMessage != null) { try { piranhaMessage.Decode(); session.PiranhaMessageManager.ReceiveMessage(piranhaMessage); } catch (Exception exception) { Logging.Warning("NetAvatarMessageManager::forwardPiranhaMessageReceived piranha message handle exception, trace: " + exception); } } } }