/// <summary> /// Creates and routes a packet with data from a binary stream. /// </summary> public void DeserializeAndRoutePacket(int nodeId, NodePacketType packetType, ITranslator translator) { // PERF: Not using VerifyThrow to avoid boxing of packetType in the non-error case if (!_packetFactories.ContainsKey(packetType)) { ErrorUtilities.ThrowInternalError("No packet handler for type {0}", packetType); } PacketFactoryRecord record = _packetFactories[packetType]; record.DeserializeAndRoutePacket(nodeId, translator); }
/// <summary> /// Routes the specified packet. /// </summary> public void RoutePacket(int nodeId, INodePacket packet) { PacketFactoryRecord record = _packetFactories[packet.Type]; record.RoutePacket(nodeId, packet); }
/// <summary> /// Registers a packet handler /// </summary> public void RegisterPacketHandler(NodePacketType packetType, NodePacketFactoryMethod factory, INodePacketHandler handler) { _packetFactories[packetType] = new PacketFactoryRecord(handler, factory); }
/// <summary> /// Registers a packet handler /// </summary> public void RegisterPacketHandler(NodePacketType packetType, NodePacketFactoryMethod factory, INodePacketHandler handler) { _packetFactories[packetType] = new PacketFactoryRecord(handler, factory); }