OpenClonk
C4PacketBase.h File Reference
#include "network/C4NetIO.h"
Include dependency graph for C4PacketBase.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  C4PacketBase
 
struct  C4NetFilenameAdapt
 
struct  C4PktHandlingData
 
class  C4PktBuf
 
class  C4IDPacket
 
class  C4PacketList
 

Enumerations

enum  C4PacketType {
  PID_None = 0xFF , PID_Ping = 0x00 , PID_Pong = 0x01 , PID_Conn = 0x02 ,
  PID_ConnRe = 0x03 , PID_FwdReq = 0x04 , PID_Fwd = 0x05 , PID_PostMortem = 0x06 ,
  PID_PacketLogStart = 0x04 , PID_Status = 0x10 , PID_StatusAck = 0x11 , PID_Addr = 0x12 ,
  PID_ClientActReq = 0x13 , PID_TCPSimOpen = 0x14 , PID_JoinData = 0x15 , PID_PlayerInfoUpdReq = 0x16 ,
  PID_LeagueRoundResults = 0x17 , PID_LobbyCountdown = 0x20 , PID_SetScenarioParameter = 0x21 , PID_NetResDis = 0x30 ,
  PID_NetResStat = 0x31 , PID_NetResDerive = 0x32 , PID_NetResReq = 0x33 , PID_NetResData = 0x34 ,
  PID_Control = 0x40 , PID_ControlReq = 0x41 , PID_ControlPkt = 0x42 , PID_ExecSyncCtrl = 0x43 ,
  CID_First = 0x80 , CID_ClientJoin = CID_First | 0x00 , CID_ClientUpdate = CID_First | 0x01 , CID_ClientRemove = CID_First | 0x02 ,
  CID_Vote = CID_First | 0x03 , CID_VoteEnd = CID_First | 0x04 , CID_SyncCheck = CID_First | 0x05 , CID_Synchronize = CID_First | 0x06 ,
  CID_Set = CID_First | 0x07 , CID_Script = CID_First | 0x08 , CID_MsgBoardReply = CID_First | 0x09 , CID_MsgBoardCmd = CID_First | 0x0A ,
  CID_PlrInfo = CID_First | 0x10 , CID_JoinPlr = CID_First | 0x11 , CID_RemovePlr = CID_First | 0x12 , CID_PlrSelect = CID_First | 0x20 ,
  CID_PlrControl = CID_First | 0x21 , CID_Message = CID_First | 0x23 , CID_PlrAction = CID_First | 0x24 , CID_PlrMouseMove = CID_First | 0x25 ,
  CID_EMMoveObj = CID_First | 0x30 , CID_EMDrawTool = CID_First | 0x31 , CID_ReInitScenario = CID_First | 0x32 , CID_EditGraph = CID_First | 0x33 ,
  CID_DebugRec = CID_First | 0x40 , CID_MenuCommand = CID_First | 0x41
}
 
enum  C4PacketClass { PC_Network , PC_Control }
 
enum  C4PacketHandlerID {
  PH_C4Network2IO = 1 << 0 , PH_C4Network2 = 1 << 1 , PH_C4GUIMainDlg = 1 << 2 , PH_C4Network2ClientList = 1 << 3 ,
  PH_C4Network2Players = 1 << 4 , PH_C4Network2ResList = 1 << 5 , PH_C4GameControlNetwork = 1 << 6
}
 

Functions

C4NetIOPacket MkC4NetIOPacket (char cStatus, const class C4PacketBase &Pkt, const C4NetIO::addr_t &addr=C4NetIO::addr_t())
 
C4NetFilenameAdapt mkNetFilenameAdapt (StdStrBuf &FileName)
 
const char * PacketNameByID (C4PacketType eID)
 

Variables

const C4PktHandlingData PktHandlingData []
 

Enumeration Type Documentation

◆ C4PacketClass

Enumerator
PC_Network 
PC_Control 

Definition at line 182 of file C4PacketBase.h.

183 {
184  PC_Network, // network packet - internal stuff
185  PC_Control // control packet - game data (saved in records)
186 };
@ PC_Network
Definition: C4PacketBase.h:184
@ PC_Control
Definition: C4PacketBase.h:185

◆ C4PacketHandlerID

Enumerator
PH_C4Network2IO 
PH_C4Network2 
PH_C4GUIMainDlg 
PH_C4Network2ClientList 
PH_C4Network2Players 
PH_C4Network2ResList 
PH_C4GameControlNetwork 

Definition at line 189 of file C4PacketBase.h.

190 {
191  PH_C4Network2IO = 1 << 0, // network i/o class
192  PH_C4Network2 = 1 << 1, // main network class
193  PH_C4GUIMainDlg = 1 << 2, // network lobby class
194  PH_C4Network2ClientList = 1 << 3, // client list class
195  PH_C4Network2Players = 1 << 4, // player list class
196  PH_C4Network2ResList = 1 << 5, // resource list class
197  PH_C4GameControlNetwork = 1 << 6, // network control class
198 };
@ PH_C4Network2
Definition: C4PacketBase.h:192
@ PH_C4GUIMainDlg
Definition: C4PacketBase.h:193
@ PH_C4Network2Players
Definition: C4PacketBase.h:195
@ PH_C4Network2ResList
Definition: C4PacketBase.h:196
@ PH_C4Network2IO
Definition: C4PacketBase.h:191
@ PH_C4Network2ClientList
Definition: C4PacketBase.h:194
@ PH_C4GameControlNetwork
Definition: C4PacketBase.h:197

◆ C4PacketType

Enumerator
PID_None 
PID_Ping 
PID_Pong 
PID_Conn 
PID_ConnRe 
PID_FwdReq 
PID_Fwd 
PID_PostMortem 
PID_PacketLogStart 
PID_Status 
PID_StatusAck 
PID_Addr 
PID_ClientActReq 
PID_TCPSimOpen 
PID_JoinData 
PID_PlayerInfoUpdReq 
PID_LeagueRoundResults 
PID_LobbyCountdown 
PID_SetScenarioParameter 
PID_NetResDis 
PID_NetResStat 
PID_NetResDerive 
PID_NetResReq 
PID_NetResData 
PID_Control 
PID_ControlReq 
PID_ControlPkt 
PID_ExecSyncCtrl 
CID_First 
CID_ClientJoin 
CID_ClientUpdate 
CID_ClientRemove 
CID_Vote 
CID_VoteEnd 
CID_SyncCheck 
CID_Synchronize 
CID_Set 
CID_Script 
CID_MsgBoardReply 
CID_MsgBoardCmd 
CID_PlrInfo 
CID_JoinPlr 
CID_RemovePlr 
CID_PlrSelect 
CID_PlrControl 
CID_Message 
CID_PlrAction 
CID_PlrMouseMove 
CID_EMMoveObj 
CID_EMDrawTool 
CID_ReInitScenario 
CID_EditGraph 
CID_DebugRec 
CID_MenuCommand 

Definition at line 76 of file C4PacketBase.h.

77 {
78  PID_None = 0xFF,
79 
80  // *** network
81 
82  // * base packets
83  // ping
84  PID_Ping = 0x00,
85  PID_Pong = 0x01,
86 
87  // connecting
88  PID_Conn = 0x02,
89  PID_ConnRe = 0x03,
90 
91  // msg forwarding
92  PID_FwdReq = 0x04,
93  PID_Fwd = 0x05,
94 
95  // post mortem
96  PID_PostMortem = 0x06,
97 
98  // (packets before this ID won't be recovered post-mortem)
99  PID_PacketLogStart = 0x04,
100 
101  // * game
102  // game status
103  PID_Status = 0x10,
104  PID_StatusAck = 0x11,
105 
106  // client address propagation
107  PID_Addr = 0x12,
108 
109  // activation request
110  PID_ClientActReq = 0x13,
111 
112  // request to perform TCP simultaneous open
113  PID_TCPSimOpen = 0x14,
114 
115  // all data a client needs to get started
116  PID_JoinData = 0x15,
117 
118  // player info
119  PID_PlayerInfoUpdReq = 0x16,
120 
121  // round results league info
122  PID_LeagueRoundResults = 0x17,
123 
124  // * lobby
125  PID_LobbyCountdown = 0x20,
126  PID_SetScenarioParameter = 0x21, // scenario parameter update
127 
128  // * resources
129  PID_NetResDis = 0x30,
130  PID_NetResStat = 0x31,
131  PID_NetResDerive = 0x32,
132  PID_NetResReq = 0x33,
133  PID_NetResData = 0x34,
134 
135  // * control
136  PID_Control = 0x40,
137  PID_ControlReq = 0x41,
138  PID_ControlPkt = 0x42,
139  PID_ExecSyncCtrl = 0x43,
140 
141  // *** control
142  CID_First = 0x80,
143 
144  CID_ClientJoin = CID_First | 0x00,
145  CID_ClientUpdate = CID_First | 0x01,
146  CID_ClientRemove = CID_First | 0x02,
147 
148  CID_Vote = CID_First | 0x03,
149  CID_VoteEnd = CID_First | 0x04,
150 
151  CID_SyncCheck = CID_First | 0x05,
152  CID_Synchronize = CID_First | 0x06,
153  CID_Set = CID_First | 0x07,
154  CID_Script = CID_First | 0x08,
155  CID_MsgBoardReply = CID_First | 0x09,
156  CID_MsgBoardCmd = CID_First | 0x0A,
157 
158  CID_PlrInfo = CID_First | 0x10,
159  CID_JoinPlr = CID_First | 0x11,
160  CID_RemovePlr = CID_First | 0x12,
161 
162  CID_PlrSelect = CID_First | 0x20,
163  CID_PlrControl = CID_First | 0x21,
164 
165  CID_Message = CID_First | 0x23,
166  CID_PlrAction = CID_First | 0x24,
167  CID_PlrMouseMove = CID_First | 0x25,
168 
169  CID_EMMoveObj = CID_First | 0x30,
170  CID_EMDrawTool = CID_First | 0x31,
172  CID_EditGraph = CID_First | 0x33,
173 
174  CID_DebugRec = CID_First | 0x40,
175  CID_MenuCommand = CID_First | 0x41,
176 
177  // Note: There are some more packet types in src/netpuncher/C4PuncherPacket.h
178  // They have been picked to be distinct from these for safety, not for necessary.
179 };
@ CID_ReInitScenario
Definition: C4PacketBase.h:171
@ PID_JoinData
Definition: C4PacketBase.h:116
@ PID_NetResDis
Definition: C4PacketBase.h:129
@ PID_StatusAck
Definition: C4PacketBase.h:104
@ PID_ControlReq
Definition: C4PacketBase.h:137
@ CID_JoinPlr
Definition: C4PacketBase.h:159
@ CID_MenuCommand
Definition: C4PacketBase.h:175
@ PID_SetScenarioParameter
Definition: C4PacketBase.h:126
@ PID_ExecSyncCtrl
Definition: C4PacketBase.h:139
@ CID_DebugRec
Definition: C4PacketBase.h:174
@ CID_SyncCheck
Definition: C4PacketBase.h:151
@ PID_PostMortem
Definition: C4PacketBase.h:96
@ CID_MsgBoardReply
Definition: C4PacketBase.h:155
@ CID_VoteEnd
Definition: C4PacketBase.h:149
@ CID_PlrInfo
Definition: C4PacketBase.h:158
@ PID_LeagueRoundResults
Definition: C4PacketBase.h:122
@ CID_Message
Definition: C4PacketBase.h:165
@ CID_PlrSelect
Definition: C4PacketBase.h:162
@ PID_TCPSimOpen
Definition: C4PacketBase.h:113
@ PID_ClientActReq
Definition: C4PacketBase.h:110
@ PID_NetResReq
Definition: C4PacketBase.h:132
@ PID_NetResDerive
Definition: C4PacketBase.h:131
@ CID_EMMoveObj
Definition: C4PacketBase.h:169
@ CID_PlrMouseMove
Definition: C4PacketBase.h:167
@ PID_Conn
Definition: C4PacketBase.h:88
@ PID_Pong
Definition: C4PacketBase.h:85
@ CID_EMDrawTool
Definition: C4PacketBase.h:170
@ PID_Control
Definition: C4PacketBase.h:136
@ CID_PlrAction
Definition: C4PacketBase.h:166
@ CID_PlrControl
Definition: C4PacketBase.h:163
@ PID_Fwd
Definition: C4PacketBase.h:93
@ PID_None
Definition: C4PacketBase.h:78
@ PID_PlayerInfoUpdReq
Definition: C4PacketBase.h:119
@ PID_NetResStat
Definition: C4PacketBase.h:130
@ CID_EditGraph
Definition: C4PacketBase.h:172
@ CID_Synchronize
Definition: C4PacketBase.h:152
@ PID_FwdReq
Definition: C4PacketBase.h:92
@ PID_PacketLogStart
Definition: C4PacketBase.h:99
@ CID_MsgBoardCmd
Definition: C4PacketBase.h:156
@ CID_First
Definition: C4PacketBase.h:142
@ CID_Script
Definition: C4PacketBase.h:154
@ CID_RemovePlr
Definition: C4PacketBase.h:160
@ CID_ClientRemove
Definition: C4PacketBase.h:146
@ CID_Vote
Definition: C4PacketBase.h:148
@ PID_ControlPkt
Definition: C4PacketBase.h:138
@ PID_Ping
Definition: C4PacketBase.h:84
@ CID_Set
Definition: C4PacketBase.h:153
@ CID_ClientJoin
Definition: C4PacketBase.h:144
@ CID_ClientUpdate
Definition: C4PacketBase.h:145
@ PID_LobbyCountdown
Definition: C4PacketBase.h:125
@ PID_Status
Definition: C4PacketBase.h:103
@ PID_ConnRe
Definition: C4PacketBase.h:89
@ PID_NetResData
Definition: C4PacketBase.h:133
@ PID_Addr
Definition: C4PacketBase.h:107

Function Documentation

◆ MkC4NetIOPacket()

C4NetIOPacket MkC4NetIOPacket ( char  cStatus,
const class C4PacketBase Pkt,
const C4NetIO::addr_t addr = C4NetIO::addr_t() 
)
inline

Definition at line 40 of file C4PacketBase.h.

41 {
42  return Pkt.pack(cStatus, addr);
43 }

References C4PacketBase::pack().

Referenced by C4GameLobby::Countdown::Abort(), C4Network2Client::AddAddr(), C4Network2ClientList::BroadcastMsgToClients(), C4Network2::ChangeGameStatus(), C4GameControlNetwork::CheckCompleteCtrl(), C4Network2::CheckStatusAck(), C4Network2::CheckStatusReached(), C4Network2Client::CloseConns(), C4GameLobby::Countdown::Countdown(), C4GameControlNetwork::DoInput(), C4Network2Client::DoTCPSimultaneousOpen(), C4GameControlNetwork::ExecSyncControl(), C4Network2Res::FinishDerive(), C4Network2::HandleConn(), C4GameControlNetwork::HandleControlReq(), C4Network2IO::HandleFwdReq(), C4Network2IO::HandlePacket(), C4Network2::HandleStatusAck(), C4GameControlNetwork::Init(), C4Network2Players::JoinLocalPlayer(), C4Network2::LeagueEnd(), C4Network2::OnDisconn(), C4GameLobby::Countdown::OnSec1Timer(), C4GameControlNetwork::PackCompleteCtrl(), C4Network2IO::Ping(), C4Network2IO::Punch(), C4Network2::RequestActivate(), C4Network2Players::RequestPlayerInfoUpdate(), C4Network2Client::SendAddresses(), C4Network2Res::SendChunk(), C4Network2IO::SendConnPackets(), C4Network2ResList::SendDiscover(), C4Network2::SendJoinData(), C4Network2ClientList::SendMsgToClient(), C4Network2Res::SendStatus(), C4GameControlNetwork::SetCtrlMode(), C4Network2Res::StartLoad(), and C4Network2::UpdateChaseTarget().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mkNetFilenameAdapt()

C4NetFilenameAdapt mkNetFilenameAdapt ( StdStrBuf FileName)
inline

Definition at line 73 of file C4PacketBase.h.

73 { return C4NetFilenameAdapt(FileName); }

Referenced by C4Network2ResCore::CompileFunc().

Here is the caller graph for this function:

◆ PacketNameByID()

const char* PacketNameByID ( C4PacketType  eID)

Definition at line 136 of file C4Packet2.cpp.

137 {
138  for (const C4PktHandlingData *pPData = PktHandlingData; pPData->ID != PID_None; pPData++)
139  if (pPData->ID == eID)
140  return pPData->Name;
141  return "?!?";
142 }
const C4PktHandlingData PktHandlingData[]
Definition: C4Packet2.cpp:50
C4PacketType ID
Definition: C4PacketBase.h:204

References C4PktHandlingData::ID, PID_None, and PktHandlingData.

Variable Documentation

◆ PktHandlingData

const C4PktHandlingData PktHandlingData[]
extern