// v1.4.0b6: Mirror rearranged the ClientSend params, so we need to apply a fix for that or // we end up using the obsoleted version. The obsolete version isn't a fatal error, but // it's best to stick with the new structures. public override void ClientSend(int channelId, ArraySegment <byte> segment) { if (Client == null) { return; } if (channelId < 0 || channelId > Channels.Length) { return; } // Create our struct... Packet clientOutgoingPacket = default; int byteCount = segment.Count; int byteOffset = segment.Offset; // Set our desired flags... PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; // Create the packet. clientOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, desiredFlags); // byteCount // Enqueue the packet. IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket { Channel = (byte)channelId, Payload = clientOutgoingPacket }; // Pass the packet onto the thread for dispatch. Client.Outgoing.Enqueue(dispatchPacket); }
public override void ServerSend(int connectionId, int channelId, ArraySegment <byte> segment) { // Debug.Log($"ServerSend({connectionId}, {channelId}, <{segment.Count} byte segment>)"); if (Server == null) { // Debug.LogError("Cannot enqueue data packet; our Server object is null. Something has gone wrong."); return; } if (channelId < 0 || channelId > Channels.Length) { // Debug.LogError("Channel ID is out of bounds."); return; } // Packet Struct Packet serverOutgoingPacket = default; int byteCount = segment.Count; int byteOffset = segment.Offset; PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; // Create the packet. serverOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, desiredFlags); // Enqueue the packet. IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket { Channel = (byte)channelId, NativePeerId = (uint)connectionId - 1, // ENet's native peer ID will be ConnID - 1 Payload = serverOutgoingPacket }; Server.Outgoing.Enqueue(dispatchPacket); }
// v1.4.0b6: Mirror rearranged the ClientSend params, so we need to apply a fix for that or // we end up using the obsoleted version. The obsolete version isn't a fatal error, but // it's best to stick with the new structures. public override void ClientSend(ArraySegment <byte> segment, int channelId) #endif { if (Client == null) { Debug.LogError("Client object is null, this shouldn't really happen but it did..."); return; } if (channelId < 0 || channelId > Channels.Length) { Debug.LogError("Channel ID is out of bounds."); return; } // Create our struct... Packet clientOutgoingPacket = default; int byteCount = segment.Count; int byteOffset = segment.Offset; // Set our desired flags... PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; // Warn if over recommended MTU... bool flagsSet = (desiredFlags & ReliableOrUnreliableFragmented) > 0; if (LogType != IgnoranceLogType.Nothing && byteCount > 1200 && !flagsSet) { Debug.LogWarning($"Warning: Client trying to send a Unreliable packet bigger than the recommended ENet 1200 byte MTU ({byteCount} > 1200). ENet will force Reliable Fragmented delivery."); } // Create the packet. clientOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, desiredFlags); // byteCount // Enqueue the packet. IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket { Channel = (byte)channelId, Payload = clientOutgoingPacket }; // Pass the packet onto the thread for dispatch. Client.Outgoing.Enqueue(dispatchPacket); }
// v1.4.0b6: Mirror rearranged the ServerSend params, so we need to apply a fix for that or // we end up using the obsoleted version. The obsolete version isn't a fatal error, but // it's best to stick with the new structures. public override void ServerSend(int connectionId, ArraySegment <byte> segment, int channelId) #endif { // Debug.Log($"ServerSend({connectionId}, {channelId}, <{segment.Count} byte segment>)"); if (Server == null) { Debug.LogError("Cannot enqueue data packet; our Server object is null. Something has gone wrong."); return; } if (channelId < 0 || channelId > Channels.Length) { Debug.LogError("Channel ID is out of bounds."); return; } // Packet Struct Packet serverOutgoingPacket = default; int byteCount = segment.Count; int byteOffset = segment.Offset; PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; // Warn if over recommended MTU bool flagsSet = (desiredFlags & ReliableOrUnreliableFragmented) > 0; if (LogType != IgnoranceLogType.Nothing && byteCount > 1200 && !flagsSet) { Debug.LogWarning($"Warning: Server trying to send a Unreliable packet bigger than the recommended ENet 1200 byte MTU ({byteCount} > 1200). ENet will force Reliable Fragmented delivery."); } // Create the packet. serverOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, (PacketFlags)Channels[channelId]); // Enqueue the packet. IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket { Channel = (byte)channelId, NativePeerId = (uint)connectionId - 1, // ENet's native peer ID will be ConnID - 1 Payload = serverOutgoingPacket }; Server.Outgoing.Enqueue(dispatchPacket); }