Inheritance: Aegis.Network.Packet
示例#1
0
        public override StreamBuffer Clone()
        {
            PacketRequest packet = new PacketRequest(this);
            packet.ResetReadIndex();
            packet.ResetWriteIndex();
            packet.Read(ReadBytes);

            return packet;
        }
示例#2
0
        private void SendAndResponse(PacketRequest reqPacket, Action<PacketResponse> actionOnReceived)
        {
            SendPacket(reqPacket,
            (p) =>
            {
                return reqPacket.SeqNo == PacketResponse.GetSeqNo(p);
            },
            (s, p) =>
            {
                PacketResponse packet = new PacketResponse(p);
                packet.SkipHeader();

                actionOnReceived(packet);
            });
        }
示例#3
0
        private void OnSS_Register_Req(PacketRequest reqPacket)
        {
            PacketResponse resPacket = new PacketResponse(reqPacket);
            Int32 serverUid = reqPacket.GetInt32();

            _svrInfo = ServerCatalog.Items.Find(v => v.Uid == serverUid);
            if (_svrInfo == null)
                resPacket.ResultCodeNo = ResultCode.InvalidUid;
            else
            {
                resPacket.ResultCodeNo = ResultCode.Ok;
                _svrInfo.Status = ServerStatus.Activate;

                Logger.Write(LogType.Info, 2, "GameServer({0}) registered.", serverUid);
            }

            SendPacket(resPacket);
        }
示例#4
0
        private void OnReceived(Session session, StreamBuffer buffer)
        {
            PacketRequest packet = new PacketRequest(buffer);
            packet.SkipHeader();

            try
            {
                packet.Dispatch(this, "On" + Protocol.GetName(packet.PacketId));
            }
            catch (AegisException e) when (e.ResultCodeNo == AegisResult.BufferUnderflow)
            {
                Logger.Write(LogType.Err, 2, "Cannot read more data at PacketId(=0x{0:X}).", packet.PacketId);
            }
            catch (Exception e)
            {
                Logger.Write(LogType.Err, 2, e.ToString());
            }
        }
示例#5
0
        private void OnConnected(Session session, Boolean connected)
        {
            if (connected == false)
            {
                TryConnect();
                return;
            }

            PacketRequest reqPacket = new PacketRequest(Protocol.GetID("SS_Register_Req"));
            reqPacket.PutInt32(ServerCatalog.MyServerInfo.Uid);
            SendAndResponse(reqPacket, (resPacket) =>
            {
                Logger.Write(LogType.Info, 2, "Connected to the AuthServer.");

                _threadRun = ThreadCancellable.CallPeriodically(1000, () =>
                {
                    PacketRequest ntfPacket = new PacketRequest(Protocol.GetID("SS_Traffic_Ntf"));
                    ntfPacket.PutInt32(Statistics.CCU);
                    SendPacket(ntfPacket);

                    return Connected;
                });
            });
        }
示例#6
0
        private void OnSS_Traffic_Ntf(PacketRequest reqPacket)
        {
            if (_svrInfo == null)
                return;

            _svrInfo.Traffic = reqPacket.GetInt32();
        }