OpenTTD Source: src/network/core/core.h Source File

OpenTTD Source 15.0-RC2

core.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
12#ifndef NETWORK_CORE_CORE_H
13#define NETWORK_CORE_CORE_H
14
15#include "../../newgrf_config.h"
16#include "../network_crypto.h"
17#include "config.h"
18
19bool NetworkCoreInitialize();
20void NetworkCoreShutdown();
21
23 enum NetworkRecvStatus : uint8_t {
24 NETWORK_RECV_STATUS_OKAY,
25 NETWORK_RECV_STATUS_DESYNC,
26 NETWORK_RECV_STATUS_NEWGRF_MISMATCH,
27 NETWORK_RECV_STATUS_SAVEGAME,
28 NETWORK_RECV_STATUS_CLIENT_QUIT,
29 NETWORK_RECV_STATUS_MALFORMED_PACKET,
30 NETWORK_RECV_STATUS_SERVER_ERROR,
31 NETWORK_RECV_STATUS_SERVER_FULL,
32 NETWORK_RECV_STATUS_SERVER_BANNED,
33 NETWORK_RECV_STATUS_CLOSE_QUERY,
34 NETWORK_RECV_STATUS_CONNECTION_LOST,
35};
36
38struct Packet;
39
43 class NetworkSocketHandler {
44private:
45 bool has_quit = false;
46
47protected:
48 friend struct Packet;
49 std::unique_ptr<class NetworkEncryptionHandler> receive_encryption_handler = nullptr;
50 std::unique_ptr<class NetworkEncryptionHandler> send_encryption_handler = nullptr;
51
52public:
54 NetworkSocketHandler() = default;
55
57 virtual ~NetworkSocketHandler() = default;
58
66 void MarkClosed() { this->has_quit = true; }
67
74 bool HasClientQuit() const { return this->has_quit; }
75
79 void Reopen() { this->has_quit = false; }
80};
81
82#endif /* NETWORK_CORE_CORE_H */
NetworkSocketHandler
SocketHandler for all network sockets in OpenTTD.
Definition core.h:43
NetworkSocketHandler::~NetworkSocketHandler
virtual ~NetworkSocketHandler()=default
Close the socket when destructing the socket handler.
NetworkSocketHandler::MarkClosed
void MarkClosed()
Mark the connection as closed.
Definition core.h:66
NetworkSocketHandler::HasClientQuit
bool HasClientQuit() const
Whether the current client connected to the socket has quit.
Definition core.h:74
NetworkSocketHandler::send_encryption_handler
std::unique_ptr< class NetworkEncryptionHandler > send_encryption_handler
The handler for encrypting sent packets.
Definition core.h:50
NetworkSocketHandler::Reopen
void Reopen()
Reopen the socket so we can send/receive stuff again.
Definition core.h:79
NetworkSocketHandler::receive_encryption_handler
std::unique_ptr< class NetworkEncryptionHandler > receive_encryption_handler
The handler for decrypting received packets.
Definition core.h:49
NetworkSocketHandler::has_quit
bool has_quit
Whether the current client has quit/send a bad packet.
Definition core.h:45
NetworkSocketHandler::NetworkSocketHandler
NetworkSocketHandler()=default
Create a new unbound socket.
config.h
Configuration options of the network stuff.
NetworkRecvStatus
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
Definition core.h:23
NETWORK_RECV_STATUS_DESYNC
@ NETWORK_RECV_STATUS_DESYNC
A desync did occur.
Definition core.h:25
NETWORK_RECV_STATUS_CLIENT_QUIT
@ NETWORK_RECV_STATUS_CLIENT_QUIT
The connection is lost gracefully. Other clients are already informed of this leaving client.
Definition core.h:28
NETWORK_RECV_STATUS_SERVER_ERROR
@ NETWORK_RECV_STATUS_SERVER_ERROR
The server told us we made an error.
Definition core.h:30
NETWORK_RECV_STATUS_SAVEGAME
@ NETWORK_RECV_STATUS_SAVEGAME
Something went wrong (down)loading the savegame.
Definition core.h:27
NETWORK_RECV_STATUS_CLOSE_QUERY
@ NETWORK_RECV_STATUS_CLOSE_QUERY
Done querying the server.
Definition core.h:33
NETWORK_RECV_STATUS_OKAY
@ NETWORK_RECV_STATUS_OKAY
Everything is okay.
Definition core.h:24
NETWORK_RECV_STATUS_NEWGRF_MISMATCH
@ NETWORK_RECV_STATUS_NEWGRF_MISMATCH
We did not have the required NewGRFs.
Definition core.h:26
NETWORK_RECV_STATUS_CONNECTION_LOST
@ NETWORK_RECV_STATUS_CONNECTION_LOST
The connection is lost unexpectedly.
Definition core.h:34
NETWORK_RECV_STATUS_SERVER_FULL
@ NETWORK_RECV_STATUS_SERVER_FULL
The server is full.
Definition core.h:31
NETWORK_RECV_STATUS_MALFORMED_PACKET
@ NETWORK_RECV_STATUS_MALFORMED_PACKET
We apparently send a malformed packet.
Definition core.h:29
NETWORK_RECV_STATUS_SERVER_BANNED
@ NETWORK_RECV_STATUS_SERVER_BANNED
The server has banned us.
Definition core.h:32
NetworkCoreShutdown
void NetworkCoreShutdown()
Shuts down the network core (as that is needed for some platforms.
Definition core.cpp:44
NetworkCoreInitialize
bool NetworkCoreInitialize()
Initializes the network core (as that is needed for some platforms.
Definition core.cpp:24
Packet
Internal entity of a packet.
Definition packet.h:43