Files
@ r6868:aab228767f55
Branch filter:
Location: cpp/openttd-patchpack/source/src/network/core/core.h - annotation
r6868:aab228767f55
2.7 KiB
text/x-c
(svn r10108) -Codechange: implement variable 0x60 (Get industry tile ID at offset) for industries.
It is exposed for for industry tiles who will reuse it too, for variable 0x62.
It is exposed for for industry tiles who will reuse it too, for variable 0x62.
r5523:6df59e296f14 r5523:6df59e296f14 r6121:a8ff6abe7fb2 r6121:a8ff6abe7fb2 r6121:a8ff6abe7fb2 r6121:a8ff6abe7fb2 r5523:6df59e296f14 r5523:6df59e296f14 r5523:6df59e296f14 r5523:6df59e296f14 r5523:6df59e296f14 r5624:8f8d1f8d3a74 r5870:306906f08b8e r5624:8f8d1f8d3a74 r6247:96e840dbefcc r6247:96e840dbefcc r5523:6df59e296f14 r5864:7aec8f5a81f1 r6248:b940b09d7ab8 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5872:512ff87e68bf r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r6248:b940b09d7ab8 r5624:8f8d1f8d3a74 r5870:306906f08b8e r5881:a910d470cf80 r5870:306906f08b8e r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5864:7aec8f5a81f1 r5624:8f8d1f8d3a74 r5864:7aec8f5a81f1 r5864:7aec8f5a81f1 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5870:306906f08b8e r5870:306906f08b8e r5870:306906f08b8e r5624:8f8d1f8d3a74 r5624:8f8d1f8d3a74 r5523:6df59e296f14 r5523:6df59e296f14 r5523:6df59e296f14 | /* $Id$ */
/**
* @file core.h Base for all network types (UDP and TCP)
*/
#ifndef NETWORK_CORE_H
#define NETWORK_CORE_H
#ifdef ENABLE_NETWORK
#include "os_abstraction.h"
#include "../../newgrf_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_CONN_LOST, ///< The conection is 'just' lost
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 quering the server
};
/** Forward declaration due to circular dependencies */
struct Packet;
/**
* SocketHandler for all network sockets in OpenTTD.
*/
class NetworkSocketHandler {
public:
/* TODO: make socket & has_quit protected once the TCP stuff
*is in a real class too */
bool has_quit; ///< Whether the current client has quit/send a bad packet
SOCKET sock; ///< The socket currently connected to
public:
/** Create a new unbound socket */
NetworkSocketHandler() { this->sock = INVALID_SOCKET; this->has_quit = false; }
/** Close the socket when distructing the socket handler */
virtual ~NetworkSocketHandler() { this->Close(); }
/** Really close the socket */
virtual void Close() {}
/**
* Close the current connection; for TCP this will be mostly equivalent
* to Close(), but for UDP it just means the packet has to be dropped.
* @return new status of the connection.
*/
virtual NetworkRecvStatus CloseConnection() { this->has_quit = true; return NETWORK_RECV_STATUS_OKAY; }
/**
* Whether this socket is currently bound to a socket.
* @return true when the socket is bound, false otherwise
*/
bool IsConnected() { return this->sock != INVALID_SOCKET; }
/**
* 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() { return this->has_quit; }
void Send_GRFIdentifier(Packet *p, const GRFIdentifier *grf);
void Recv_GRFIdentifier(Packet *p, GRFIdentifier *grf);
};
#endif /* ENABLE_NETWORK */
#endif /* NETWORK_CORE_H */
|