Ejemplo n.º 1
0
 public void SendPacket(IPacket packet, PacketDeliveryMethod method)
 {
     #if DEBUG
     Packets.CheckRegistered(packet);
     #endif
     Server.OnLocalPacket(packet);
 }
Ejemplo n.º 2
0
 public void SendPacket(IPacket packet, PacketDeliveryMethod method)
 {
     #if DEBUG
     LibreLancer.Packets.CheckRegistered(packet);
     #endif
     Packets.Enqueue(packet);
 }
Ejemplo n.º 3
0
        public void SendPacket(IPacket packet, PacketDeliveryMethod method)
        {
            var om = new NetDataWriter();

            Packets.Write(om, packet);
            method.ToLiteNetLib(out DeliveryMethod mt, out byte ch);
            client.FirstPeer?.Send(om, ch, mt);
        }
Ejemplo n.º 4
0
 public void SendPacketWithEvent(IPacket packet, Action onAck, PacketDeliveryMethod method)
 {
     #if DEBUG
     LibreLancer.Packets.CheckRegistered(packet);
     #endif
     Packets.Enqueue(packet);
     onAck();
 }
Ejemplo n.º 5
0
        public void SendPacketWithEvent(IPacket packet, Action onAck, PacketDeliveryMethod method)
        {
            var m = new NetDataWriter();

            m.Put((byte)1);
            Packets.Write(m, packet);
            method.ToLiteNetLib(out var mtd, out var channel);
            Client.SendWithDeliveryEvent(m, channel, mtd, onAck);
        }
Ejemplo n.º 6
0
        public void SendMessage(PacketDeliveryMethod method, INetworkPacket packet, string accountName)
        {
            if (!_usernameToConnection.ContainsKey(accountName))
            {
                return;
            }
            NetConnection recipient = _usernameToConnection[accountName];

            NetOutgoingMessage message = _server.CreateMessage();
            MemoryStream       stream  = new MemoryStream();

            Serializer.Serialize(stream, packet);
            message.Write(stream.ToArray());

            // This may seem redundant but I am protecting against the possibility that
            // Lidgren is vaporware. Should we need to swap out the network code in the future,
            // only this class will need to be touched.
            NetDeliveryMethod deliveryMethod = NetDeliveryMethod.Unreliable;

            switch (method)
            {
            case PacketDeliveryMethod.Unreliable:
                deliveryMethod = NetDeliveryMethod.Unreliable;
                break;

            case PacketDeliveryMethod.UnreliableSequenced:
                deliveryMethod = NetDeliveryMethod.UnreliableSequenced;
                break;

            case PacketDeliveryMethod.ReliableUnordered:
                deliveryMethod = NetDeliveryMethod.ReliableUnordered;
                break;

            case PacketDeliveryMethod.ReliableSequenced:
                deliveryMethod = NetDeliveryMethod.ReliableSequenced;
                break;

            case PacketDeliveryMethod.ReliableOrdered:
                deliveryMethod = NetDeliveryMethod.ReliableOrdered;
                break;
            }


            _server.SendMessage(message, recipient, deliveryMethod);
        }
Ejemplo n.º 7
0
 public void SendPacket(IPacket packet, PacketDeliveryMethod method)
 {
     method.ToLiteNetLib(out DeliveryMethod mt, out byte ch);
     if (mt == DeliveryMethod.ReliableOrdered)
     {
         lock (reliableLock)
         {
             reliableSend.Enqueue(packet);
         }
     }
     else
     {
         var m = new NetDataWriter();
         m.Put((byte)1);
         Packets.Write(m, packet);
         Client.Send(m, ch, mt);
     }
 }
Ejemplo n.º 8
0
        public void SendMessage(PacketDeliveryMethod method, INetworkPacket packet)
        {
            if (_serverConnection == null ||
                _serverConnection.Status != NetConnectionStatus.Connected)
            {
                throw new Exception("Client is not currently connected to a server.");
            }

            NetOutgoingMessage message = _client.CreateMessage();
            MemoryStream       stream  = new MemoryStream();

            Serializer.Serialize(stream, packet);
            message.Write(stream.ToArray());

            // This may seem redundant but I am protecting against the possibility that
            // Lidgren is vaporware. Should we need to swap out the network code in the future,
            // only this class will need to be touched.
            NetDeliveryMethod deliveryMethod = NetDeliveryMethod.Unreliable;

            switch (method)
            {
            case PacketDeliveryMethod.Unreliable:
                deliveryMethod = NetDeliveryMethod.Unreliable;
                break;

            case PacketDeliveryMethod.UnreliableSequenced:
                deliveryMethod = NetDeliveryMethod.UnreliableSequenced;
                break;

            case PacketDeliveryMethod.ReliableUnordered:
                deliveryMethod = NetDeliveryMethod.ReliableUnordered;
                break;

            case PacketDeliveryMethod.ReliableSequenced:
                deliveryMethod = NetDeliveryMethod.ReliableSequenced;
                break;

            case PacketDeliveryMethod.ReliableOrdered:
                deliveryMethod = NetDeliveryMethod.ReliableOrdered;
                break;
            }
            _client.SendMessage(message, deliveryMethod);
        }
Ejemplo n.º 9
0
 public static void ToLiteNetLib(this PacketDeliveryMethod self, out DeliveryMethod method, out byte channel)
 {
     channel = 0;
     method  = DeliveryMethod.ReliableOrdered;
     if (self == PacketDeliveryMethod.SequenceA)
     {
         method  = DeliveryMethod.Sequenced;
         channel = 0;
     }
     if (self == PacketDeliveryMethod.SequenceB)
     {
         method  = DeliveryMethod.Sequenced;
         channel = 1;
     }
     if (self == PacketDeliveryMethod.SequenceC)
     {
         method  = DeliveryMethod.Sequenced;
         channel = 2;
     }
 }