Ejemplo n.º 1
0
        private int AddChannel(NetworkDelivery type)
        {
            EP2PSend options = EP2PSend.k_EP2PSendReliableWithBuffering;

            switch (type)
            {
            case NetworkDelivery.Unreliable:
                options = EP2PSend.k_EP2PSendUnreliable;
                break;

            case NetworkDelivery.UnreliableSequenced:
                options = EP2PSend.k_EP2PSendUnreliable;
                break;

            case NetworkDelivery.Reliable:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;

            case NetworkDelivery.ReliableSequenced:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;

            case NetworkDelivery.ReliableFragmentedSequenced:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;

            default:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;
            }
            channelSendTypes.Add(channelCounter, options);
            channelCounter++;
            return(channelCounter - 1);
        }
Ejemplo n.º 2
0
        DeliveryMethod ConvertNetworkDelivery(NetworkDelivery type)
        {
            switch (type)
            {
            case NetworkDelivery.Unreliable:
            {
                return(DeliveryMethod.Unreliable);
            }

            case NetworkDelivery.UnreliableSequenced:
            {
                return(DeliveryMethod.Sequenced);
            }

            case NetworkDelivery.Reliable:
            {
                return(DeliveryMethod.ReliableUnordered);
            }

            case NetworkDelivery.ReliableSequenced:
            {
                return(DeliveryMethod.ReliableOrdered);
            }

            case NetworkDelivery.ReliableFragmentedSequenced:
            {
                return(DeliveryMethod.ReliableOrdered);
            }

            default:
            {
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
            }
        }
        public override void Send(ulong clientId, ArraySegment <byte> data, NetworkDelivery delivery)
        {
            EP2PSend sendType = NetworkDeliveryToEP2PSend(delivery);

            if (clientId == ServerClientId)
            {
#if UNITY_SERVER
                SteamGameServerNetworking.SendP2PPacket(serverUser.SteamId, data.Array, (uint)data.Count, sendType, (int)InternalChannelType.NetcodeData);
#else
                SteamNetworking.SendP2PPacket(serverUser.SteamId, data.Array, (uint)data.Count, sendType, (int)InternalChannelType.NetcodeData);
#endif
            }
            else
            {
                if (connectedUsers.ContainsKey(clientId))
                {
#if UNITY_SERVER
                    SteamGameServerNetworking.SendP2PPacket(connectedUsers[clientId].SteamId, data.Array, (uint)data.Count, sendType, (int)InternalChannelType.NetcodeData);
#else
                    SteamNetworking.SendP2PPacket(connectedUsers[clientId].SteamId, data.Array, (uint)data.Count, sendType, (int)InternalChannelType.NetcodeData);
#endif
                }
                else
                {
                    if (NetworkManager.Singleton.LogLevel <= LogLevel.Error)
                    {
                        NetworkLog.LogErrorServer(nameof(SteamNetworkingTransport) + " - Can't Send to client, client not connected, clientId: " + clientId);
                    }
                }
            }
        }
        private EP2PSend NetworkDeliveryToEP2PSend(NetworkDelivery type)
        {
            EP2PSend options = EP2PSend.k_EP2PSendReliableWithBuffering;

            switch (type)
            {
            case NetworkDelivery.Unreliable:
                options = EP2PSend.k_EP2PSendUnreliable;
                break;

            case NetworkDelivery.UnreliableSequenced:
                options = EP2PSend.k_EP2PSendUnreliable;
                break;

            case NetworkDelivery.Reliable:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;

            case NetworkDelivery.ReliableSequenced:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;

            case NetworkDelivery.ReliableFragmentedSequenced:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;

            default:
                options = EP2PSend.k_EP2PSendReliableWithBuffering;
                break;
            }

            return(options);
        }
Ejemplo n.º 5
0
        public override void Send(ulong clientId, ArraySegment <byte> data, NetworkDelivery delivery)
        {
            GetRufflesConnectionDetails(clientId, out ulong connectionId);

            byte channelId = channelNameToId[delivery];

            connections[connectionId].Send(data, channelId, false, 0);
        }
 public override void Send(ulong clientId, ArraySegment <byte> data, NetworkDelivery qos)
 {
     if (!m_Peers.ContainsKey(clientId))
     {
         return;
     }
     m_Peers[clientId].Send(data.Array, data.Offset, data.Count, ConvertNetworkDelivery(qos));
 }
        public override void Send(ulong clientId, ArraySegment <byte> data, NetworkDelivery delivery)
        {
            Packet packet = default;

            packet.Create(data.Array, data.Offset, data.Count, NetworkDeliveryToPacketFlag(delivery));

            GetEnetConnectionDetails(clientId, out uint peerId);

            connectedEnetPeers[peerId].Send(0, ref packet);
        }
 public PacketFlags NetworkDeliveryToPacketFlag(NetworkDelivery delivery)
 {
     return(delivery switch
     {
         NetworkDelivery.Unreliable => PacketFlags.Unsequenced,
         NetworkDelivery.Reliable => PacketFlags.Reliable,  // ENET csharp Does not support ReliableUnsequenced. https://github.com/MidLevel/MLAPI.Transports/pull/5#issuecomment-498311723
         NetworkDelivery.ReliableSequenced => PacketFlags.Reliable,
         NetworkDelivery.ReliableFragmentedSequenced => PacketFlags.Reliable,
         NetworkDelivery.UnreliableSequenced => PacketFlags.None, // unreliable sequenced according to docs here https://github.com/nxrighthere/ENet-CSharp
         _ => throw new ArgumentOutOfRangeException(nameof(delivery), delivery, null)
     });
Ejemplo n.º 9
0
 public override void Send(ulong clientId, ArraySegment <byte> data, NetworkDelivery delivery)
 {
     if (clientId == ServerClientId)
     {
         WebSocketClient.Send(data);
     }
     else
     {
         WebSocketServerConnectionBehavior.Send(clientId, data);
     }
 }
 private SendType NetworkDeliveryToSendType(NetworkDelivery delivery)
 {
     return(delivery switch
     {
         NetworkDelivery.Reliable => SendType.Reliable,
         NetworkDelivery.ReliableFragmentedSequenced => SendType.Reliable,
         NetworkDelivery.ReliableSequenced => SendType.Reliable,
         NetworkDelivery.Unreliable => SendType.Unreliable,
         NetworkDelivery.UnreliableSequenced => SendType.Unreliable,
         _ => SendType.Reliable
     });
        public int AddMLAPIChannel(NetworkDelivery type, ConnectionConfig config)
        {
            switch (type)
            {
            case NetworkDelivery.Unreliable:
                return(config.AddChannel(QosType.Unreliable));

            case NetworkDelivery.Reliable:
                return(config.AddChannel(QosType.Reliable));

            case NetworkDelivery.ReliableSequenced:
                return(config.AddChannel(QosType.ReliableSequenced));

            case NetworkDelivery.ReliableFragmentedSequenced:
                return(config.AddChannel(QosType.ReliableFragmentedSequenced));

            case NetworkDelivery.UnreliableSequenced:
                return(config.AddChannel(QosType.UnreliableSequenced));
            }

            return(0);
        }
Ejemplo n.º 12
0
        private ChannelType ConvertChannelType(NetworkDelivery type)
        {
            switch (type)
            {
            case NetworkDelivery.Reliable:
                return(ChannelType.Reliable);

            case NetworkDelivery.ReliableFragmentedSequenced:
                return(ChannelType.ReliableSequencedFragmented);

            case NetworkDelivery.ReliableSequenced:
                return(ChannelType.ReliableSequenced);

            case NetworkDelivery.Unreliable:
                return(ChannelType.Unreliable);

            case NetworkDelivery.UnreliableSequenced:
                return(ChannelType.UnreliableOrdered);
            }

            return(ChannelType.Reliable);
        }
        public PacketReliability ConvertNetworkDelivery(NetworkDelivery delivery)
        {
            switch (delivery)
            {
            case NetworkDelivery.Unreliable:
                return(PacketReliability.UnreliableUnordered);

            case NetworkDelivery.UnreliableSequenced:
                return(PacketReliability.ReliableOrdered);

            case NetworkDelivery.Reliable:
                return(PacketReliability.ReliableUnordered);

            case NetworkDelivery.ReliableSequenced:
                return(PacketReliability.ReliableOrdered);

            case NetworkDelivery.ReliableFragmentedSequenced:
                return(PacketReliability.ReliableOrdered);

            default:
                return(PacketReliability.ReliableOrdered);
            }
        }
Ejemplo n.º 14
0
        public EnetDelivery MLAPINetworkDeliveryToPacketFlag(NetworkDelivery type)
        {
            switch (type)
            {
            case NetworkDelivery.Unreliable:
            {
                return(EnetDelivery.Unreliable);
            }

            case NetworkDelivery.Reliable:
            {
                // ENET Does not support ReliableUnsequenced.
                // https://github.com/MidLevel/MLAPI.Transports/pull/5#issuecomment-498311723
                return(EnetDelivery.ReliableSequenced);
            }

            case NetworkDelivery.ReliableSequenced:
            {
                return(EnetDelivery.ReliableSequenced);
            }

            case NetworkDelivery.ReliableFragmentedSequenced:
            {
                return(EnetDelivery.ReliableSequenced);
            }

            case NetworkDelivery.UnreliableSequenced:
            {
                return(EnetDelivery.UnreliableSequenced);
            }

            default:
            {
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }
            }
        }
Ejemplo n.º 15
0
 public bool ConnectToSimulator()
 {
     return(NetworkDelivery.ConnectToSimulator());
 }
 public TransportChannel(NetworkChannel channel, NetworkDelivery delivery)
 {
     Channel  = channel;
     Delivery = delivery;
 }
 public override void Send(ulong clientId, ArraySegment <byte> data, NetworkDelivery delivery)
 {
     throw new NotImplementedException();
 }