private void HandleMessage(IServerMessageBase msg) { try { MessageHandler.HandleMessage(msg); } catch (Exception e) { LunaLog.LogError($"[LMP]: Error handling Message type {msg.Data.GetType()}, exception: {e}"); NetworkConnection.Disconnect($"Error handling {msg.Data.GetType()} Message"); } finally { msg.Recycle(); } }
public virtual void EnqueueMessage(IServerMessageBase msg) { if (!Enabled) { return; } if (ProcessMessagesInUnityThread) { MessageHandler.IncomingMessages.Enqueue(msg); } else { TaskFactory.StartNew(() => { HandleMessage(msg); msg.Recycle(); }); } }