public override StreamBuffer Clone() { PacketRequest packet = new PacketRequest(this); packet.ResetReadIndex(); packet.ResetWriteIndex(); packet.Read(ReadBytes); return packet; }
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); }); }
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); }
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()); } }
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; }); }); }
private void OnSS_Traffic_Ntf(PacketRequest reqPacket) { if (_svrInfo == null) return; _svrInfo.Traffic = reqPacket.GetInt32(); }