Files
@ r28024:510529c5fc82
Branch filter:
Location: cpp/openttd-patchpack/source/src/network/core/core.h - annotation
r28024:510529c5fc82
3.0 KiB
text/x-c
Change: Use CARGO_LIST to show station cargo acceptance changes. (#11379)
This simplifies construction of the news message and allows for more than
two changes to be show in one line.
This simplifies construction of the news message and allows for more than
two changes to be show in one line.
r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r6121:a8ff6abe7fb2 r6121:a8ff6abe7fb2 r6121:a8ff6abe7fb2 r6121:a8ff6abe7fb2 r16851:b5784600e35e r16851:b5784600e35e r5523:6df59e296f14 r5870:306906f08b8e r16677:a4fdf17e43e3 r5624:8f8d1f8d3a74 r6247:96e840dbefcc r6247:96e840dbefcc r5523:6df59e296f14 r5864:7aec8f5a81f1 r6248:b940b09d7ab8 r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r25431:ee9e6d792f6e r6248:b940b09d7ab8 r5624:8f8d1f8d3a74 r5870:306906f08b8e r5881:a910d470cf80 r5870:306906f08b8e r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r25458:3aaccd46b7fa r11589:553d24b1005c r25458:3aaccd46b7fa r5624:8f8d1f8d3a74 r5864:7aec8f5a81f1 r11593:8dd431018ab1 r5864:7aec8f5a81f1 r19944:25a78576fb5e r27372:06d384d76bd2 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r25458:3aaccd46b7fa r25458:3aaccd46b7fa r25458:3aaccd46b7fa r25458:3aaccd46b7fa r25458:3aaccd46b7fa r5624:8f8d1f8d3a74 r25458:3aaccd46b7fa r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r9428:6800206a6c0d r5870:306906f08b8e r11589:553d24b1005c r11589:553d24b1005c r11589:553d24b1005c r11589:553d24b1005c r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r16851:b5784600e35e | /*
* This file is part of OpenTTD.
* 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.
* 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.
* 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/>.
*/
/**
* @file core.h Base for all network types (UDP and TCP)
*/
#ifndef NETWORK_CORE_CORE_H
#define NETWORK_CORE_CORE_H
#include "../../newgrf_config.h"
#include "config.h"
bool NetworkCoreInitialize();
void NetworkCoreShutdown();
/** Status of a network client; reasons why a client has quit */
enum NetworkRecvStatus {
NETWORK_RECV_STATUS_OKAY, ///< Everything is okay.
NETWORK_RECV_STATUS_DESYNC, ///< A desync did occur.
NETWORK_RECV_STATUS_NEWGRF_MISMATCH, ///< We did not have the required NewGRFs.
NETWORK_RECV_STATUS_SAVEGAME, ///< Something went wrong (down)loading the savegame.
NETWORK_RECV_STATUS_CLIENT_QUIT, ///< The connection is lost gracefully. Other clients are already informed of this leaving client.
NETWORK_RECV_STATUS_MALFORMED_PACKET, ///< We apparently send a malformed packet.
NETWORK_RECV_STATUS_SERVER_ERROR, ///< The server told us we made an error.
NETWORK_RECV_STATUS_SERVER_FULL, ///< The server is full.
NETWORK_RECV_STATUS_SERVER_BANNED, ///< The server has banned us.
NETWORK_RECV_STATUS_CLOSE_QUERY, ///< Done querying the server.
NETWORK_RECV_STATUS_CONNECTION_LOST, ///< The connection is lost unexpectedly.
};
/** Forward declaration due to circular dependencies */
struct Packet;
/**
* SocketHandler for all network sockets in OpenTTD.
*/
class NetworkSocketHandler {
private:
bool has_quit; ///< Whether the current client has quit/send a bad packet
public:
/** Create a new unbound socket */
NetworkSocketHandler() { this->has_quit = false; }
/** Close the socket when destructing the socket handler */
virtual ~NetworkSocketHandler() = default;
/**
* Mark the connection as closed.
*
* This doesn't mean the actual connection is closed, but just that we
* act like it is. This is useful for UDP, which doesn't normally close
* a socket, but its handler might need to pretend it does.
*/
void MarkClosed() { this->has_quit = true; }
/**
* Whether the current client connected to the socket has quit.
* In the case of UDP, for example, once a client quits (send bad
* data), the socket in not closed; only the packet is dropped.
* @return true when the current client has quit, false otherwise
*/
bool HasClientQuit() const { return this->has_quit; }
/**
* Reopen the socket so we can send/receive stuff again.
*/
void Reopen() { this->has_quit = false; }
};
#endif /* NETWORK_CORE_CORE_H */
|