internal void InvokeHandler(int msgType, NetworkReader reader, int channelId) { if (messageHandlers.TryGetValue(msgType, out NetworkMessageDelegate msgDelegate)) { msgDelegate(this, reader, channelId); } else { try { Type type = MessagePacker.GetMessageType(msgType); throw new InvalidDataException($"Unexpected message {type} received in {this}. Did you register a handler for it?"); } catch (KeyNotFoundException) { throw new InvalidDataException($"Unexpected message ID {msgType} received in {this}. May be due to no existing RegisterHandler for this message."); } } }