Esempio n. 1
0
        public bool RecvReliablePackets(ServerChannel channel, List <Packet> packets, IChannelListener listener, ServerHeartbeatProcessing heartbeat)
        {
            while (true)
            {
                int size = channel.Recv(m_RecvBuffer, 0, m_RecvBuffer.Length);

                if (size <= 0)
                {
                    break;
                }

                if (size == 8)
                {
                    ByteReadMemory memory = new ByteReadMemory(m_RecvBuffer, 0, size);
                    uint           flag   = memory.ReadUInt();
                    uint           conv   = memory.ReadUInt();

                    if (conv == channel.Conv)
                    {
                        if (flag == KcpConstants.Flag_Connect)
                        {
                            channel.SetConnectedStatus(true);
                            if (listener != null)
                            {
                                listener.OnAddChannel(channel);
                            }
                            continue;
                        }

                        if (flag == KcpConstants.Flag_Disconnect)
                        {
                            channel.SetConnectedStatus(false);
                            if (listener != null)
                            {
                                listener.OnRemoveChannel(channel);
                            }
                            continue;
                        }

                        if (flag == KcpConstants.Flag_Heartbeat)
                        {
                            heartbeat.UpdateHeartbeat(channel, m_RecvBuffer, 0, size);
                            continue;
                        }
                    }
                }

                PacketProcessing.Recv(m_RecvBuffer, 0, size, packets);
            }

            return(packets.Count > 0);
        }
Esempio n. 2
0
 public void SendPackets(KcpCon kcp, HConcurrentQueue <Packet> packets)
 {
     while (packets.TryDequeue(out Packet packet))
     {
         int size = PacketProcessing.Send(m_Buffer, packet);
         if (size > 0)
         {
             if (packet.Channel == ChannelType.Reliable)
             {
                 kcp.Send(m_Buffer, 0, size);
             }
             else if (packet.Channel == ChannelType.Unreliable)
             {
                 kcp.RawSend(m_Buffer, 0, size);
             }
         }
     }
 }
Esempio n. 3
0
        public void RecvReliablePackets(ClientTransport transport, KcpCon kcp, List <Packet> packets, ClientHeartbeatProcessing heartbeat)
        {
            while (true)
            {
                int size = kcp.Recv(m_Buffer, 0, m_Buffer.Length);

                if (size <= 0)
                {
                    break;
                }

                if (size == 8)
                {
                    ByteReadMemory memory = new ByteReadMemory(m_Buffer, 0, 8);
                    uint           flag   = memory.ReadUInt();
                    uint           conv   = memory.ReadUInt();

                    if (conv == kcp.Conv)
                    {
                        if (flag == KcpConstants.Flag_Heartbeat)
                        {
                            heartbeat.RecvHeartbeat();
                            continue;
                        }

                        if (flag == KcpConstants.Flag_Disconnect)
                        {
                            transport.Disconnect(false, true);
                            continue;
                        }
                    }
                }

                PacketProcessing.Recv(m_Buffer, 0, size, packets);
            }
        }
Esempio n. 4
0
 public void RecvUnreliablePackets(byte[] rawBuffer, int offset, int count, List <Packet> packets)
 {
     PacketProcessing.Recv(rawBuffer, offset, count, packets);
 }
Esempio n. 5
0
 public bool RecvUnreliablePackets(byte[] rawBuffer, int offset, int count, List <Packet> packets)
 {
     PacketProcessing.Recv(rawBuffer, offset, count, packets);
     return(packets.Count > 0);
 }