OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

core.h
Go to the documentation of this file.
1 /* $Id: core.h 24900 2013-01-08 22:46:42Z planetmaker $ */
2
3 /*
4 * This file is part of OpenTTD.
5 * 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.
6 * 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.
7 * 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/>.
8 */
9
14 #ifndef NETWORK_CORE_CORE_H
15 #define NETWORK_CORE_CORE_H
16
17 #include "../../newgrf_config.h"
18 #include "config.h"
19
20 #ifdef ENABLE_NETWORK
21
22 bool NetworkCoreInitialize();
23 void NetworkCoreShutdown();
24
26 enum NetworkRecvStatus {
27 NETWORK_RECV_STATUS_OKAY,
28 NETWORK_RECV_STATUS_DESYNC,
29 NETWORK_RECV_STATUS_NEWGRF_MISMATCH,
30 NETWORK_RECV_STATUS_SAVEGAME,
31 NETWORK_RECV_STATUS_CONN_LOST,
32 NETWORK_RECV_STATUS_MALFORMED_PACKET,
33 NETWORK_RECV_STATUS_SERVER_ERROR,
34 NETWORK_RECV_STATUS_SERVER_FULL,
35 NETWORK_RECV_STATUS_SERVER_BANNED,
36 NETWORK_RECV_STATUS_CLOSE_QUERY,
37 };
38
40 struct Packet;
41
45 class NetworkSocketHandler {
46 bool has_quit;
47 public:
49 NetworkSocketHandler() { this->has_quit = false; }
50
52 virtual ~NetworkSocketHandler() { this->Close(); }
53
55 virtual void Close() {}
56
63 virtual NetworkRecvStatus CloseConnection(bool error = true) { this->has_quit = true; return NETWORK_RECV_STATUS_OKAY; }
64
71 bool HasClientQuit() const { return this->has_quit; }
72
76 void Reopen() { this->has_quit = false; }
77
78 void SendGRFIdentifier(Packet *p, const GRFIdentifier *grf);
79 void ReceiveGRFIdentifier(Packet *p, GRFIdentifier *grf);
80 void SendCompanyInformation(Packet *p, const struct Company *c, const struct NetworkCompanyStats *stats, uint max_len = NETWORK_COMPANY_NAME_LENGTH);
81 };
82
83 #endif /* ENABLE_NETWORK */
84
85 #endif /* NETWORK_CORE_CORE_H */