Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
NetHost.h
Go to the documentation of this file.
1/* Copyright (C) 2019 Wildfire Games.
2 * This file is part of 0 A.D.
3 *
4 * 0 A.D. is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * 0 A.D. is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef NETHOST_H
19#define NETHOST_H
20
21#include "ps/CStr.h"
22
23#include <map>
24
25/**
26 * @file
27 * Various declarations shared by networking code.
28 */
29
30typedef struct _ENetPeer ENetPeer;
31typedef struct _ENetPacket ENetPacket;
32typedef struct _ENetHost ENetHost;
33class CNetMessage;
34
36{
37 /**
38 * Whether the player is currently connected and active.
39 * (We retain information on disconnected players to support rejoining,
40 * but don't transmit these to other clients.)
41 */
43
44 /// Player name
45 CStrW m_Name;
46
47 /// The player that the given host controls, or -1 if none (observer)
49
50 /// Status - Ready or not: 0 for not ready, 1 for ready, 2 to stay ready
52};
53
54typedef std::map<CStr, PlayerAssignment> PlayerAssignmentMap; // map from GUID -> assignment
55
56/**
57 * Reasons sent by server to clients in disconnection messages.
58 * Must be kept in sync with binaries/data/mods/public/gui/common/network.js
59 * To avoid ambiguity, use a distinct reason for each callstack leading to a disconnect.
60 * NDR_UNKNOWN should remain reserved to the case where it is actually not a known disconnect by the server.
61 */
63{
80};
81
83{
84public:
85 static const int DEFAULT_CHANNEL = 0;
86
87 /**
88 * Transmit a message to the given peer.
89 * @param message message to send
90 * @param peer peer to send to
91 * @param peerName name of peer for debug logs
92 * @return true on success, false on failure
93 */
94 static bool SendMessage(const CNetMessage* message, ENetPeer* peer, const char* peerName);
95
96 /**
97 * Construct an ENet packet by serialising the given message.
98 * @return NULL on failure
99 */
100 static ENetPacket* CreatePacket(const CNetMessage* message);
101
102 /**
103 * Initialize ENet.
104 * This must be called before any other networking code.
105 */
106 static void Initialize();
107
108 /**
109 * Deinitialize ENet.
110 */
111 static void Deinitialize();
112};
113
114#endif // NETHOST_H
struct _ENetHost ENetHost
Definition: NetClient.h:37
struct _ENetPeer ENetPeer
Definition: NetHost.h:30
NetDisconnectReason
Reasons sent by server to clients in disconnection messages.
Definition: NetHost.h:63
@ NDR_INCORRECT_PROTOCOL_VERSION
Definition: NetHost.h:66
@ NDR_BANNED
Definition: NetHost.h:70
@ NDR_SERVER_LOADING
Definition: NetHost.h:67
@ NDR_STUN_PORT_FAILED
Definition: NetHost.h:78
@ NDR_SERVER_ALREADY_IN_GAME
Definition: NetHost.h:68
@ NDR_INCORRECT_READY_TURN_COMMANDS
Definition: NetHost.h:75
@ NDR_KICKED
Definition: NetHost.h:69
@ NDR_GUID_FAILED
Definition: NetHost.h:74
@ NDR_SERVER_FULL
Definition: NetHost.h:72
@ NDR_STUN_ENDPOINT_FAILED
Definition: NetHost.h:79
@ NDR_SERVER_REFUSED
Definition: NetHost.h:77
@ NDR_INCORRECT_READY_TURN_SIMULATED
Definition: NetHost.h:76
@ NDR_LOBBY_AUTH_FAILED
Definition: NetHost.h:73
@ NDR_PLAYERNAME_IN_USE
Definition: NetHost.h:71
@ NDR_SERVER_SHUTDOWN
Definition: NetHost.h:65
@ NDR_UNKNOWN
Definition: NetHost.h:64
std::map< CStr, PlayerAssignment > PlayerAssignmentMap
Definition: NetHost.h:54
struct _ENetPacket ENetPacket
Definition: NetHost.h:31
Definition: NetHost.h:83
static ENetPacket * CreatePacket(const CNetMessage *message)
Construct an ENet packet by serialising the given message.
Definition: NetHost.cpp:49
static void Deinitialize()
Deinitialize ENet.
Definition: NetHost.cpp:76
static void Initialize()
Initialize ENet.
Definition: NetHost.cpp:70
static bool SendMessage(const CNetMessage *message, ENetPeer *peer, const char *peerName)
Transmit a message to the given peer.
Definition: NetHost.cpp:26
static const int DEFAULT_CHANNEL
Definition: NetHost.h:85
The base class for all network messages exchanged within the game.
Definition: NetMessage.h:33
Definition: NetHost.h:36
bool m_Enabled
Whether the player is currently connected and active.
Definition: NetHost.h:42
CStrW m_Name
Player name.
Definition: NetHost.h:45
i32 m_PlayerID
The player that the given host controls, or -1 if none (observer)
Definition: NetHost.h:48
u8 m_Status
Status - Ready or not: 0 for not ready, 1 for ready, 2 to stay ready.
Definition: NetHost.h:51
int32_t i32
Definition: types.h:34
uint8_t u8
Definition: types.h:37