OpenTTD Source: NetworkContentSocketHandler Class Reference

OpenTTD Source 15.0-RC2

Public Member Functions | Protected Member Functions
NetworkContentSocketHandler Class Reference

Base socket handler for all Content TCP sockets. More...

`#include <tcp_content.h>`

Inheritance diagram for NetworkContentSocketHandler:

## Public Member Functions
| NetworkContentSocketHandler (SOCKET s=INVALID_SOCKET)
| Create a new cs socket handler for a given cs.
virtual | ~NetworkContentSocketHandler ()
| On destructing of this class, the socket needs to be closed.
bool | ReceivePackets ()
| Receive a packet at TCP level.
Public Member Functions inherited from NetworkTCPSocketHandler
bool | IsConnected () const
| Whether this socket is currently bound to a socket.
virtual NetworkRecvStatus | CloseConnection (bool error=true)
| This will put this socket handler in a close state.
void | CloseSocket ()
| Close the actual socket of the connection.
virtual void | SendPacket (std::unique_ptr< Packet > &&packet)
| This function puts the packet in the send-queue and it is send as soon as possible.
SendPacketsState | SendPackets (bool closing_down=false)
| Sends all the buffered packets out for this client.
virtual std::unique_ptr< Packet > | ReceivePacket ()
| Receives a packet for the given client.
bool | CanSendReceive ()
| Check whether this socket can send or receive something.
bool | HasSendQueue ()
| Whether there is something pending in the send queue.
| NetworkTCPSocketHandler (SOCKET s=INVALID_SOCKET)
| Construct a socket handler for a TCP connection.
Public Member Functions inherited from NetworkSocketHandler
| NetworkSocketHandler ()=default
| Create a new unbound socket.
virtual | ~NetworkSocketHandler ()=default
| Close the socket when destructing the socket handler.
void | MarkClosed ()
| Mark the connection as closed.
bool | HasClientQuit () const
| Whether the current client connected to the socket has quit.
void | Reopen ()
| Reopen the socket so we can send/receive stuff again.

## Protected Member Functions
bool | ReceiveInvalidPacket (PacketContentType type)
| Helper for logging receiving invalid packets.
virtual bool | Receive_CLIENT_INFO_LIST (Packet &p)
| Client requesting a list of content info: uint8_t type uint32_t openttd version (or 0xFFFFFFFF if using a list) Only if the above value is 0xFFFFFFFF: uint8_t count string branch-name ("vanilla" for upstream OpenTTD) string release version (like "12.0")
virtual bool | Receive_CLIENT_INFO_ID (Packet &p)
| Client requesting a list of content info: uint16_t count of ids uint32_t id (count times)
virtual bool | Receive_CLIENT_INFO_EXTID (Packet &p)
| Client requesting a list of content info based on an external 'unique' id; GRF ID for NewGRFS, shortname and for base graphics and AIs.
virtual bool | Receive_CLIENT_INFO_EXTID_MD5 (Packet &p)
| Client requesting a list of content info based on an external 'unique' id; GRF ID + MD5 checksum for NewGRFS, shortname and xor-ed MD5 checksums for base graphics and AIs.
virtual bool | Receive_SERVER_INFO (Packet &p)
| Server sending list of content info: uint8_t type (invalid ID == does not exist) uint32_t id uint32_t file_size string name (max 32 characters) string version (max 16 characters) uint32_t unique id uint8_t md5sum (16 bytes) uint8_t dependency count uint32_t unique id of dependency (dependency count times) uint8_t tag count string tag (max 32 characters for tag count times)
virtual bool | Receive_CLIENT_CONTENT (Packet &p)
| Client requesting the actual content: uint16_t count of unique ids uint32_t unique id (count times)
virtual bool | Receive_SERVER_CONTENT (Packet &p)
| Server sending list of content info: uint32_t unique id uint32_t file size (0 == does not exist) string file name (max 48 characters) After this initial packet, packets with the actual data are send using the same packet type.
bool | HandlePacket (Packet &p)
| Handle the given packet, i.e.

## Additional Inherited Members
Data Fields inherited from NetworkTCPSocketHandler
SOCKET | sock = INVALID_SOCKET
| The socket currently connected to.
bool | writable = false
| Can we write to this socket?
Protected Attributes inherited from NetworkSocketHandler
std::unique_ptr< class NetworkEncryptionHandler > | receive_encryption_handler = nullptr
| The handler for decrypting received packets.
std::unique_ptr< class NetworkEncryptionHandler > | send_encryption_handler = nullptr
| The handler for encrypting sent packets.

## Detailed Description

Base socket handler for all Content TCP sockets.

Definition at line 22 of file tcp_content.h.

## Constructor & Destructor Documentation

## ◆ NetworkContentSocketHandler()

NetworkContentSocketHandler::NetworkContentSocketHandler | ( | SOCKET | s = `INVALID_SOCKET` | ) |
| inline

Create a new cs socket handler for a given cs.

Parameters

  s | the socket we are connected with
  address | IP etc. of the client

Definition at line 123 of file tcp_content.h.

## ◆ ~NetworkContentSocketHandler()

virtual NetworkContentSocketHandler::~NetworkContentSocketHandler | ( |  | ) |
| inlinevirtual

On destructing of this class, the socket needs to be closed.

Definition at line 129 of file tcp_content.h.

References NetworkTCPSocketHandler::CloseSocket().

## Member Function Documentation

## ◆ HandlePacket()

bool NetworkContentSocketHandler::HandlePacket | ( | Packet & | p | ) |
| protected

Handle the given packet, i.e.

pass it to the right parser receive command.

Parameters

  p | the packet to handle

Returns
  true if we should immediately handle further packets, false otherwise

Definition at line 106 of file tcp_content.cpp.

References Debug, NetworkSocketHandler::HasClientQuit(), PACKET_CONTENT_CLIENT_CONTENT, PACKET_CONTENT_CLIENT_INFO_EXTID, PACKET_CONTENT_CLIENT_INFO_EXTID_MD5, PACKET_CONTENT_CLIENT_INFO_ID, PACKET_CONTENT_CLIENT_INFO_LIST, PACKET_CONTENT_END, PACKET_CONTENT_SERVER_CONTENT, PACKET_CONTENT_SERVER_INFO, Receive_CLIENT_CONTENT(), Receive_CLIENT_INFO_EXTID(), Receive_CLIENT_INFO_EXTID_MD5(), Receive_CLIENT_INFO_ID(), Receive_CLIENT_INFO_LIST(), Receive_SERVER_CONTENT(), Receive_SERVER_INFO(), and Packet::Recv_uint8().

Referenced by ReceivePackets().

## ◆ Receive_CLIENT_CONTENT()

bool NetworkContentSocketHandler::Receive_CLIENT_CONTENT | ( | Packet & | p | ) |
| protectedvirtual

Client requesting the actual content: uint16_t count of unique ids uint32_t unique id (count times)

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Definition at line 182 of file tcp_content.cpp.

References PACKET_CONTENT_CLIENT_CONTENT, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ Receive_CLIENT_INFO_EXTID()

bool NetworkContentSocketHandler::Receive_CLIENT_INFO_EXTID | ( | Packet & | p | ) |
| protectedvirtual

Client requesting a list of content info based on an external 'unique' id; GRF ID for NewGRFS, shortname and for base graphics and AIs.

Scenarios and AI libraries are not supported uint8_t count of requests for each request: uint8_t type unique id (uint32_t)

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Definition at line 179 of file tcp_content.cpp.

References PACKET_CONTENT_CLIENT_INFO_EXTID, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ Receive_CLIENT_INFO_EXTID_MD5()

bool NetworkContentSocketHandler::Receive_CLIENT_INFO_EXTID_MD5 | ( | Packet & | p | ) |
| protectedvirtual

Client requesting a list of content info based on an external 'unique' id; GRF ID + MD5 checksum for NewGRFS, shortname and xor-ed MD5 checksums for base graphics and AIs.

Scenarios and AI libraries are not supported uint8_t count of requests for each request: uint8_t type unique id (uint32_t) md5 (16 bytes)

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Definition at line 180 of file tcp_content.cpp.

References PACKET_CONTENT_CLIENT_INFO_EXTID_MD5, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ Receive_CLIENT_INFO_ID()

bool NetworkContentSocketHandler::Receive_CLIENT_INFO_ID | ( | Packet & | p | ) |
| protectedvirtual

Client requesting a list of content info: uint16_t count of ids uint32_t id (count times)

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Definition at line 178 of file tcp_content.cpp.

References PACKET_CONTENT_CLIENT_INFO_ID, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ Receive_CLIENT_INFO_LIST()

bool NetworkContentSocketHandler::Receive_CLIENT_INFO_LIST | ( | Packet & | p | ) |
| protectedvirtual

Client requesting a list of content info: uint8_t type uint32_t openttd version (or 0xFFFFFFFF if using a list) Only if the above value is 0xFFFFFFFF: uint8_t count string branch-name ("vanilla" for upstream OpenTTD) string release version (like "12.0")

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Definition at line 177 of file tcp_content.cpp.

References PACKET_CONTENT_CLIENT_INFO_LIST, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ Receive_SERVER_CONTENT()

bool NetworkContentSocketHandler::Receive_SERVER_CONTENT | ( | Packet & | p | ) |
| protectedvirtual

Server sending list of content info: uint32_t unique id uint32_t file size (0 == does not exist) string file name (max 48 characters) After this initial packet, packets with the actual data are send using the same packet type.

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Reimplemented in ClientNetworkContentSocketHandler.

Definition at line 183 of file tcp_content.cpp.

References PACKET_CONTENT_SERVER_CONTENT, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ Receive_SERVER_INFO()

bool NetworkContentSocketHandler::Receive_SERVER_INFO | ( | Packet & | p | ) |
| protectedvirtual

Server sending list of content info: uint8_t type (invalid ID == does not exist) uint32_t id uint32_t file_size string name (max 32 characters) string version (max 16 characters) uint32_t unique id uint8_t md5sum (16 bytes) uint8_t dependency count uint32_t unique id of dependency (dependency count times) uint8_t tag count string tag (max 32 characters for tag count times)

Parameters

  p | The packet that was just received.

Returns
  True upon success, otherwise false.

Reimplemented in ClientNetworkContentSocketHandler.

Definition at line 181 of file tcp_content.cpp.

References PACKET_CONTENT_SERVER_INFO, and ReceiveInvalidPacket().

Referenced by HandlePacket().

## ◆ ReceiveInvalidPacket()

bool NetworkContentSocketHandler::ReceiveInvalidPacket | ( | PacketContentType | type | ) |
| protected

Helper for logging receiving invalid packets.

Parameters

  type | The received packet type.

Returns
  Always false, as it's an error.

Definition at line 171 of file tcp_content.cpp.

References Debug.

Referenced by Receive_CLIENT_CONTENT(), Receive_CLIENT_INFO_EXTID(), Receive_CLIENT_INFO_EXTID_MD5(), Receive_CLIENT_INFO_ID(), Receive_CLIENT_INFO_LIST(), Receive_SERVER_CONTENT(), and Receive_SERVER_INFO().

## ◆ ReceivePackets()

bool NetworkContentSocketHandler::ReceivePackets | ( |  | ) |

Receive a packet at TCP level.

Returns
  Whether at least one packet was received.

Definition at line 133 of file tcp_content.cpp.

References HandlePacket(), and NetworkTCPSocketHandler::ReceivePacket().

Referenced by ClientNetworkContentSocketHandler::SendReceive().

The documentation for this class was generated from the following files:

- src/network/core/tcp_content.h
- src/network/core/tcp_content.cpp