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

OpenTTD Source 1.11.0-RC1

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 <http://www.gnu.org/licenses/>.
6 */
7
12 #ifndef NETWORK_CORE_CORE_H
13 #define NETWORK_CORE_CORE_H
14
15 #include "../../newgrf_config.h"
16 #include "config.h"
17
18 bool NetworkCoreInitialize();
19 void NetworkCoreShutdown();
20
22 enum NetworkRecvStatus {
23 NETWORK_RECV_STATUS_OKAY,
24 NETWORK_RECV_STATUS_DESYNC,
25 NETWORK_RECV_STATUS_NEWGRF_MISMATCH,
26 NETWORK_RECV_STATUS_SAVEGAME,
27 NETWORK_RECV_STATUS_CONN_LOST,
28 NETWORK_RECV_STATUS_MALFORMED_PACKET,
29 NETWORK_RECV_STATUS_SERVER_ERROR,
30 NETWORK_RECV_STATUS_SERVER_FULL,
31 NETWORK_RECV_STATUS_SERVER_BANNED,
32 NETWORK_RECV_STATUS_CLOSE_QUERY,
33 };
34
36 struct Packet;
37
41 class NetworkSocketHandler {
42 bool has_quit;
43 public:
45 NetworkSocketHandler() { this->has_quit = false; }
46
48 virtual ~NetworkSocketHandler() { this->Close(); }
49
51 virtual void Close() {}
52
59 virtual NetworkRecvStatus CloseConnection(bool error = true) { this->has_quit = true; return NETWORK_RECV_STATUS_OKAY; }
60
67 bool HasClientQuit() const { return this->has_quit; }
68
72 void Reopen() { this->has_quit = false; }
73
74 void SendGRFIdentifier(Packet *p, const GRFIdentifier *grf);
75 void ReceiveGRFIdentifier(Packet *p, GRFIdentifier *grf);
76 void SendCompanyInformation(Packet *p, const struct Company *c, const struct NetworkCompanyStats *stats, uint max_len = NETWORK_COMPANY_NAME_LENGTH);
77 };
78
79 #endif /* NETWORK_CORE_CORE_H */
NetworkCompanyStats
Simple calculated statistics of a company.
Definition: network_type.h:57
NETWORK_RECV_STATUS_DESYNC
@ NETWORK_RECV_STATUS_DESYNC
A desync did occur.
Definition: core.h:24
NetworkSocketHandler
SocketHandler for all network sockets in OpenTTD.
Definition: core.h:41
NetworkSocketHandler::CloseConnection
virtual NetworkRecvStatus CloseConnection(bool error=true)
Close the current connection; for TCP this will be mostly equivalent to Close(), but for UDP it just ...
Definition: core.h:59
GRFIdentifier
Basic data to distinguish a GRF.
Definition: newgrf_config.h:83
NetworkSocketHandler::has_quit
bool has_quit
Whether the current client has quit/send a bad packet.
Definition: core.h:42
NetworkCoreShutdown
void NetworkCoreShutdown()
Shuts down the network core (as that is needed for some platforms.
Definition: core.cpp:44
NETWORK_RECV_STATUS_CONN_LOST
@ NETWORK_RECV_STATUS_CONN_LOST
The connection is 'just' lost.
Definition: core.h:27
NetworkSocketHandler::Reopen
void Reopen()
Reopen the socket so we can send/receive stuff again.
Definition: core.h:72
NETWORK_RECV_STATUS_NEWGRF_MISMATCH
@ NETWORK_RECV_STATUS_NEWGRF_MISMATCH
We did not have the required NewGRFs.
Definition: core.h:25
NETWORK_RECV_STATUS_SERVER_FULL
@ NETWORK_RECV_STATUS_SERVER_FULL
The server is full.
Definition: core.h:30
NETWORK_RECV_STATUS_SERVER_ERROR
@ NETWORK_RECV_STATUS_SERVER_ERROR
The server told us we made an error.
Definition: core.h:29
NetworkSocketHandler::NetworkSocketHandler
NetworkSocketHandler()
Create a new unbound socket.
Definition: core.h:45
NetworkSocketHandler::SendGRFIdentifier
void SendGRFIdentifier(Packet *p, const GRFIdentifier *grf)
Serializes the GRFIdentifier (GRF ID and MD5 checksum) to the packet.
Definition: core.cpp:57
NETWORK_RECV_STATUS_SERVER_BANNED
@ NETWORK_RECV_STATUS_SERVER_BANNED
The server has banned us.
Definition: core.h:31
NETWORK_RECV_STATUS_CLOSE_QUERY
@ NETWORK_RECV_STATUS_CLOSE_QUERY
Done querying the server.
Definition: core.h:32
Packet
Internal entity of a packet.
Definition: packet.h:40
NetworkSocketHandler::HasClientQuit
bool HasClientQuit() const
Whether the current client connected to the socket has quit.
Definition: core.h:67
NetworkSocketHandler::~NetworkSocketHandler
virtual ~NetworkSocketHandler()
Close the socket when destructing the socket handler.
Definition: core.h:48
NetworkRecvStatus
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
Definition: core.h:22
NetworkCoreInitialize
bool NetworkCoreInitialize()
Initializes the network core (as that is needed for some platforms.
Definition: core.cpp:24
error
void CDECL error(const char *s,...)
Error handling for fatal non-user errors.
Definition: openttd.cpp:131
NetworkSocketHandler::ReceiveGRFIdentifier
void ReceiveGRFIdentifier(Packet *p, GRFIdentifier *grf)
Deserializes the GRFIdentifier (GRF ID and MD5 checksum) from the packet.
Definition: core.cpp:71
NetworkSocketHandler::SendCompanyInformation
void SendCompanyInformation(Packet *p, const struct Company *c, const struct NetworkCompanyStats *stats, uint max_len=NETWORK_COMPANY_NAME_LENGTH)
Package some generic company information into a packet.
Definition: network_server.cpp:1516
config.h
NETWORK_RECV_STATUS_OKAY
@ NETWORK_RECV_STATUS_OKAY
Everything is okay.
Definition: core.h:23
NetworkSocketHandler::Close
virtual void Close()
Really close the socket.
Definition: core.h:51
NETWORK_RECV_STATUS_SAVEGAME
@ NETWORK_RECV_STATUS_SAVEGAME
Something went wrong (down)loading the savegame.
Definition: core.h:26
Company
Definition: company_base.h:110
NETWORK_RECV_STATUS_MALFORMED_PACKET
@ NETWORK_RECV_STATUS_MALFORMED_PACKET
We apparently send a malformed packet.
Definition: core.h:28
NETWORK_COMPANY_NAME_LENGTH
static const uint NETWORK_COMPANY_NAME_LENGTH
The maximum length of the company name, in bytes including '\0'.
Definition: config.h:41