Ejemplo n.º 1
0
        private void OnSendPacketMessage(NetBuffer msg, NetConnection conn)
        {
            long id         = MessageRecvId;
            var packetMsg   = new SendPacketMessage();
            packetMsg.Read(msg);


            lock(SendPacketMessageRecvDictionaryLocker)
            {
                SendPacketMessageRecvDictionary[id] = new PacketNetBuffer(packetMsg.TargetSize, conn);
            }

            var rspMsg = new SendPacketMessageRecv()
            {
                UniqueIdentifier    = packetMsg.UniqueIdentifier,
                MessagePacketId     = id,
            };
            SendMessage(rspMsg, conn);
        }
Ejemplo n.º 2
0
        private void OnSendPacketMessageRecv(NetBuffer msg)
        {
            var recvMsg             = new SendPacketMessageRecv();
            recvMsg.Read(msg);
            var UniqueIdentifier    = recvMsg.UniqueIdentifier;
            var MessageRacketId     = recvMsg.MessagePacketId;
            if (PacketMessageDictionary.ContainsKey(UniqueIdentifier))
            {
                NetOutgoingMessage packetMsg = null;
                lock (PacketMessageDictionaryLocker)
                {
                    if (PacketMessageDictionary.ContainsKey(UniqueIdentifier))
                    {
                        packetMsg = PacketMessageDictionary[UniqueIdentifier];
                        PacketMessageDictionary.Remove(UniqueIdentifier);
                    }
                }
                if (packetMsg != null)
                {
                    int n = (packetMsg.LengthBytes + MaxPacketSize - 1) / MaxPacketSize;
                    for (int i = 0; i < n; ++i)
                    {
                        int l       = packetMsg.LengthBytes - i * MaxPacketSize;
                        int length  = l < MaxPacketSize ? l : MaxPacketSize;

                        if (length > 0)
                        {
                            NetOutgoingMessage om   = client.CreateMessage();
                            var pm                  = new PacketMessage()
                            {
                                Number          = i,
                                MessagePacketId = MessageRacketId,
                                Bytes           = new byte[length],
                            };

                            Array.Copy(packetMsg.Data, i * MaxPacketSize, pm.Bytes, 0, length);
                            om.Write(pm.Id);
                            pm.Write(om);
                            client.SendMessage(om, NetDeliveryMethod.Unreliable);
                        }
                    }
                }
            }
        }