OpenTTD Source
1.11.2
|
Internal entity of a packet. More...
#include <packet.h>
Public Member Functions | |
Packet (NetworkSocketHandler *cs) | |
Create a packet that is used to read from a network socket. More... | |
Packet (PacketType type) | |
Creates a packet to send. More... | |
~Packet () | |
Free the buffer of this packet. | |
void | PrepareToSend () |
Writes the packet size from the raw packet from packet->size. | |
void | Send_bool (bool data) |
Package a boolean in the packet. More... | |
void | Send_uint8 (uint8 data) |
Package a 8 bits integer in the packet. More... | |
void | Send_uint16 (uint16 data) |
Package a 16 bits integer in the packet. More... | |
void | Send_uint32 (uint32 data) |
Package a 32 bits integer in the packet. More... | |
void | Send_uint64 (uint64 data) |
Package a 64 bits integer in the packet. More... | |
void | Send_string (const char *data) |
Sends a string over the network. More... | |
void | ReadRawPacketSize () |
Reads the packet size from the raw packet and stores it in the packet->size. | |
void | PrepareToRead () |
Prepares the packet so it can be read. | |
bool | CanReadFromPacket (uint bytes_to_read) |
Is it safe to read from the packet, i.e. More... | |
bool | Recv_bool () |
Read a boolean from the packet. More... | |
uint8 | Recv_uint8 () |
Read a 8 bits integer from the packet. More... | |
uint16 | Recv_uint16 () |
Read a 16 bits integer from the packet. More... | |
uint32 | Recv_uint32 () |
Read a 32 bits integer from the packet. More... | |
uint64 | Recv_uint64 () |
Read a 64 bits integer from the packet. More... | |
void | Recv_string (char *buffer, size_t size, StringValidationSettings settings=SVS_REPLACE_WITH_QUESTION_MARK) |
Reads a string till it finds a '\0' in the stream. More... | |
Data Fields | |
Packet * | next |
The next packet. More... | |
PacketSize | size |
The size of the whole packet for received packets. More... | |
PacketSize | pos |
The current read/write position in the packet. | |
byte * | buffer |
The buffer of this packet, of basically variable length up to SEND_MTU. | |
Private Attributes | |
NetworkSocketHandler * | cs |
Socket we're associated with. | |
Internal entity of a packet.
As everything is sent as a packet, all network communication will need to call the functions that populate the packet. Every packet can be at most SEND_MTU bytes. Overflowing this limit will give an assertion when sending (i.e. writing) the packet. Reading past the size of the packet when receiving will return all 0 values and "" in case of the string.
— Points of attention —
Packet::Packet | ( | NetworkSocketHandler * | cs | ) |
Packet::Packet | ( | PacketType | type | ) |
bool Packet::CanReadFromPacket | ( | uint | bytes_to_read | ) |
Is it safe to read from the packet, i.e.
didn't we run over the buffer ?
bytes_to_read | The amount of bytes we want to try to read. |
Definition at line 169 of file packet.cpp.
References cs, NetworkSocketHandler::HasClientQuit(), pos, and size.
Referenced by Recv_uint16(), Recv_uint32(), Recv_uint64(), and Recv_uint8().
bool Packet::Recv_bool | ( | ) |
Read a boolean from the packet.
Definition at line 208 of file packet.cpp.
References Recv_uint8().
Referenced by DeserializeNetworkGameInfo(), ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(), ClientNetworkGameSocketHandler::Receive_SERVER_COMMAND(), and ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO().
void Packet::Recv_string | ( | char * | buffer, |
size_t | size, | ||
StringValidationSettings | settings = SVS_REPLACE_WITH_QUESTION_MARK |
||
) |
Reads a string till it finds a '\0' in the stream.
buffer | The buffer to put the data into. |
size | The size of the buffer. |
settings | The string validation settings. |
Definition at line 286 of file packet.cpp.
References buffer, cs, NetworkSocketHandler::HasClientQuit(), pos, and size.
Referenced by DeserializeNetworkGameInfo(), ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(), ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(), ClientNetworkContentSocketHandler::Receive_SERVER_CONTENT(), ClientNetworkContentSocketHandler::Receive_SERVER_INFO(), ClientNetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PASSWORD(), ClientNetworkUDPSocketHandler::Receive_SERVER_NEWGRFS(), ClientNetworkGameSocketHandler::Receive_SERVER_RCON(), and ClientNetworkGameSocketHandler::Receive_SERVER_WELCOME().
uint16 Packet::Recv_uint16 | ( | ) |
Read a 16 bits integer from the packet.
Definition at line 231 of file packet.cpp.
References CanReadFromPacket().
Referenced by DeserializeNetworkGameInfo(), ClientNetworkUDPSocketHandler::Receive_MASTER_RESPONSE_LIST(), ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(), ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_UPDATE(), and ClientNetworkGameSocketHandler::Receive_SERVER_RCON().
uint32 Packet::Recv_uint32 | ( | ) |
Read a 32 bits integer from the packet.
Definition at line 246 of file packet.cpp.
References CanReadFromPacket().
Referenced by DeserializeGRFIdentifier(), DeserializeNetworkGameInfo(), ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(), ClientNetworkGameSocketHandler::Receive_SERVER_CLIENT_INFO(), ClientNetworkGameSocketHandler::Receive_SERVER_COMMAND(), ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(), ClientNetworkContentSocketHandler::Receive_SERVER_CONTENT(), ClientNetworkGameSocketHandler::Receive_SERVER_ERROR_QUIT(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkContentSocketHandler::Receive_SERVER_INFO(), ClientNetworkGameSocketHandler::Receive_SERVER_JOIN(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_BEGIN(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_SIZE(), ClientNetworkGameSocketHandler::Receive_SERVER_MOVE(), ClientNetworkGameSocketHandler::Receive_SERVER_NEED_COMPANY_PASSWORD(), ClientNetworkGameSocketHandler::Receive_SERVER_QUIT(), ClientNetworkGameSocketHandler::Receive_SERVER_SYNC(), and ClientNetworkGameSocketHandler::Receive_SERVER_WELCOME().
uint64 Packet::Recv_uint64 | ( | ) |
Read a 64 bits integer from the packet.
Definition at line 263 of file packet.cpp.
References CanReadFromPacket().
Referenced by MasterNetworkUDPSocketHandler::Receive_MASTER_SESSION_KEY(), ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(), and ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO().
uint8 Packet::Recv_uint8 | ( | ) |
Read a 8 bits integer from the packet.
Definition at line 217 of file packet.cpp.
References buffer, CanReadFromPacket(), and pos.
Referenced by DeserializeGRFIdentifier(), DeserializeNetworkGameInfo(), NetworkContentSocketHandler::HandlePacket(), NetworkAdminSocketHandler::HandlePacket(), NetworkGameSocketHandler::HandlePacket(), NetworkUDPSocketHandler::HandleUDPPacket(), ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR(), ServerNetworkUDPSocketHandler::Receive_CLIENT_GET_NEWGRFS(), ClientNetworkUDPSocketHandler::Receive_MASTER_RESPONSE_LIST(), ClientNetworkGameSocketHandler::Receive_SERVER_CHAT(), ClientNetworkGameSocketHandler::Receive_SERVER_CHECK_NEWGRFS(), ClientNetworkGameSocketHandler::Receive_SERVER_COMPANY_INFO(), ClientNetworkGameSocketHandler::Receive_SERVER_CONFIG_UPDATE(), ClientNetworkContentSocketHandler::Receive_SERVER_CONTENT(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), ClientNetworkContentSocketHandler::Receive_SERVER_INFO(), ClientNetworkUDPSocketHandler::Receive_SERVER_NEWGRFS(), and Recv_bool().
void Packet::Send_bool | ( | bool | data | ) |
Package a boolean in the packet.
data | The data to send. |
Definition at line 87 of file packet.cpp.
References Send_uint8().
Referenced by ServerNetworkGameSocketHandler::SendChat(), ServerNetworkAdminSocketHandler::SendCmdNames(), ServerNetworkGameSocketHandler::SendCommand(), ServerNetworkGameSocketHandler::SendCompanyInfo(), ServerNetworkAdminSocketHandler::SendProtocol(), ServerNetworkAdminSocketHandler::SendWelcome(), and SerializeNetworkGameInfo().
void Packet::Send_string | ( | const char * | data | ) |
Sends a string over the network.
It sends out the string + '\0'. No size-byte or something.
data | The string to send |
Definition at line 148 of file packet.cpp.
References buffer, SEND_MTU, and size.
Referenced by NetworkUDPAdvertiseThread(), ServerNetworkUDPSocketHandler::Receive_CLIENT_GET_NEWGRFS(), ServerNetworkAdminSocketHandler::SendChat(), ClientNetworkGameSocketHandler::SendChat(), ServerNetworkGameSocketHandler::SendChat(), ServerNetworkAdminSocketHandler::SendClientInfo(), ServerNetworkGameSocketHandler::SendClientInfo(), ServerNetworkAdminSocketHandler::SendClientUpdate(), ServerNetworkAdminSocketHandler::SendCmdLogging(), ServerNetworkAdminSocketHandler::SendCmdNames(), NetworkGameSocketHandler::SendCommand(), ServerNetworkGameSocketHandler::SendCompanyInfo(), ClientNetworkGameSocketHandler::SendCompanyPassword(), ServerNetworkAdminSocketHandler::SendConsole(), ServerNetworkGameSocketHandler::SendError(), ClientNetworkGameSocketHandler::SendGamePassword(), ServerNetworkAdminSocketHandler::SendGameScript(), ClientNetworkGameSocketHandler::SendMove(), ServerNetworkGameSocketHandler::SendNeedCompanyPassword(), ServerNetworkAdminSocketHandler::SendRcon(), ClientNetworkGameSocketHandler::SendRCon(), ServerNetworkAdminSocketHandler::SendRconEnd(), ServerNetworkGameSocketHandler::SendRConResult(), ClientNetworkGameSocketHandler::SendSetName(), ClientNetworkGameSocketHandler::SendSetPassword(), ServerNetworkAdminSocketHandler::SendWelcome(), ServerNetworkGameSocketHandler::SendWelcome(), and SerializeNetworkGameInfo().
void Packet::Send_uint16 | ( | uint16 | data | ) |
Package a 16 bits integer in the packet.
data | The data to send. |
Definition at line 106 of file packet.cpp.
References buffer, GB(), SEND_MTU, and size.
Referenced by NetworkUDPAdvertiseThread(), NetworkUDPRemoveAdvertiseThread(), ClientNetworkContentSocketHandler::RequestContentList(), ServerNetworkAdminSocketHandler::SendCmdLogging(), ServerNetworkAdminSocketHandler::SendCmdNames(), ServerNetworkAdminSocketHandler::SendCompanyEconomy(), ServerNetworkGameSocketHandler::SendCompanyUpdate(), ServerNetworkAdminSocketHandler::SendProtocol(), ServerNetworkAdminSocketHandler::SendRcon(), ServerNetworkGameSocketHandler::SendRConResult(), ServerNetworkAdminSocketHandler::SendWelcome(), and SerializeNetworkGameInfo().
void Packet::Send_uint32 | ( | uint32 | data | ) |
Package a 32 bits integer in the packet.
data | The data to send. |
Definition at line 117 of file packet.cpp.
References buffer, GB(), SEND_MTU, and size.
Referenced by PacketWriter::Finish(), ClientNetworkContentSocketHandler::RequestContentList(), ClientNetworkGameSocketHandler::SendAck(), ServerNetworkAdminSocketHandler::SendChat(), ClientNetworkGameSocketHandler::SendChat(), ServerNetworkGameSocketHandler::SendChat(), ServerNetworkAdminSocketHandler::SendClientError(), ServerNetworkAdminSocketHandler::SendClientInfo(), ServerNetworkGameSocketHandler::SendClientInfo(), ServerNetworkAdminSocketHandler::SendClientJoin(), ServerNetworkAdminSocketHandler::SendClientQuit(), ServerNetworkAdminSocketHandler::SendClientUpdate(), ServerNetworkAdminSocketHandler::SendCmdLogging(), ServerNetworkGameSocketHandler::SendCommand(), NetworkGameSocketHandler::SendCommand(), ServerNetworkAdminSocketHandler::SendDate(), ServerNetworkGameSocketHandler::SendErrorQuit(), ServerNetworkGameSocketHandler::SendFrame(), ServerNetworkGameSocketHandler::SendJoin(), ServerNetworkGameSocketHandler::SendMove(), ServerNetworkGameSocketHandler::SendNeedCompanyPassword(), ServerNetworkAdminSocketHandler::SendPong(), ServerNetworkGameSocketHandler::SendQuit(), ServerNetworkGameSocketHandler::SendSync(), ServerNetworkAdminSocketHandler::SendWelcome(), ServerNetworkGameSocketHandler::SendWelcome(), SerializeGRFIdentifier(), and SerializeNetworkGameInfo().
void Packet::Send_uint64 | ( | uint64 | data | ) |
Package a 64 bits integer in the packet.
data | The data to send. |
Definition at line 130 of file packet.cpp.
References buffer, GB(), SEND_MTU, and size.
Referenced by NetworkUDPAdvertiseThread(), ServerNetworkAdminSocketHandler::SendChat(), ClientNetworkGameSocketHandler::SendChat(), ServerNetworkGameSocketHandler::SendChat(), and ServerNetworkAdminSocketHandler::SendCompanyEconomy().
void Packet::Send_uint8 | ( | uint8 | data | ) |
Package a 8 bits integer in the packet.
data | The data to send. |
Definition at line 96 of file packet.cpp.
References buffer, SEND_MTU, and size.
Referenced by NetworkUDPAdvertiseThread(), NetworkUDPQueryMasterServer(), NetworkUDPRemoveAdvertiseThread(), ServerNetworkUDPSocketHandler::Receive_CLIENT_DETAIL_INFO(), ServerNetworkUDPSocketHandler::Receive_CLIENT_GET_NEWGRFS(), ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(), ClientNetworkContentSocketHandler::RequestContentList(), Send_bool(), ClientNetworkGameSocketHandler::SendAck(), ServerNetworkAdminSocketHandler::SendChat(), ClientNetworkGameSocketHandler::SendChat(), ServerNetworkGameSocketHandler::SendChat(), ServerNetworkAdminSocketHandler::SendClientError(), ServerNetworkAdminSocketHandler::SendClientInfo(), ServerNetworkGameSocketHandler::SendClientInfo(), ServerNetworkAdminSocketHandler::SendClientUpdate(), ServerNetworkAdminSocketHandler::SendCmdLogging(), NetworkGameSocketHandler::SendCommand(), ServerNetworkAdminSocketHandler::SendCompanyEconomy(), ServerNetworkGameSocketHandler::SendCompanyInfo(), ServerNetworkAdminSocketHandler::SendCompanyNew(), ServerNetworkAdminSocketHandler::SendCompanyRemove(), ServerNetworkAdminSocketHandler::SendCompanyStats(), ServerNetworkGameSocketHandler::SendConfigUpdate(), ServerNetworkAdminSocketHandler::SendError(), ClientNetworkGameSocketHandler::SendError(), ServerNetworkGameSocketHandler::SendError(), ServerNetworkGameSocketHandler::SendErrorQuit(), ServerNetworkGameSocketHandler::SendMove(), ClientNetworkGameSocketHandler::SendMove(), ServerNetworkGameSocketHandler::SendNewGRFCheck(), ServerNetworkAdminSocketHandler::SendProtocol(), ServerNetworkGameSocketHandler::SendWait(), ServerNetworkAdminSocketHandler::SendWelcome(), SerializeGRFIdentifier(), and SerializeNetworkGameInfo().
Packet* Packet::next |
The next packet.
Used for queueing packets before sending.
Definition at line 42 of file packet.h.
Referenced by PacketWriter::AppendQueue(), NetworkTCPSocketHandler::CloseConnection(), Packet(), PacketWriter::PopPacket(), PrepareToSend(), PacketWriter::PrependQueue(), ReadRawPacketSize(), NetworkTCPSocketHandler::SendPacket(), NetworkTCPSocketHandler::SendPackets(), and PacketWriter::~PacketWriter().
PacketSize Packet::size |
The size of the whole packet for received packets.
For packets that will be sent, the value is filled in just before the actual transmission.
Definition at line 48 of file packet.h.
Referenced by TCPListenHandler< ServerNetworkGameSocketHandler, PACKET_SERVER_FULL, PACKET_SERVER_BANNED >::AcceptClient(), PacketReader::AddPacket(), CanReadFromPacket(), Packet(), PrepareToSend(), ReadRawPacketSize(), ServerNetworkUDPSocketHandler::Receive_CLIENT_DETAIL_INFO(), ClientNetworkContentSocketHandler::Receive_SERVER_CONTENT(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), NetworkTCPSocketHandler::ReceivePacket(), ServerNetworkGameSocketHandler::ReceivePacket(), NetworkUDPSocketHandler::ReceivePackets(), Recv_string(), Send_string(), Send_uint16(), Send_uint32(), Send_uint64(), Send_uint8(), ServerNetworkAdminSocketHandler::SendCmdNames(), NetworkTCPSocketHandler::SendPacket(), NetworkUDPSocketHandler::SendPacket(), NetworkTCPSocketHandler::SendPackets(), and PacketWriter::Write().