Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
NetHost.h
Go to the documentation of this file.
1 /* Copyright (C) 2011 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 
30 typedef struct _ENetPeer ENetPeer;
31 typedef struct _ENetPacket ENetPacket;
32 typedef struct _ENetHost ENetHost;
33 class 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  */
42  bool m_Enabled;
43 
44  /// Player name
45  CStrW m_Name;
46 
47  /// The player that the given host controls, or -1 if none (observer)
49 };
50 
51 typedef std::map<CStr, PlayerAssignment> PlayerAssignmentMap; // map from GUID -> assignment
52 
53 /**
54  * Reasons sent by server to clients in disconnection messages.
55  * Must be kept in sync with binaries/data/mods/public/gui/common/network.js
56  */
58 {
63 };
64 
65 class CNetHost
66 {
67 public:
68  static const int DEFAULT_CHANNEL = 0;
69 
70  /**
71  * Transmit a message to the given peer.
72  * @param message message to send
73  * @param peer peer to send to
74  * @param peerName name of peer for debug logs
75  * @return true on success, false on failure
76  */
77  static bool SendMessage(const CNetMessage* message, ENetPeer* peer, const char* peerName);
78 
79  /**
80  * Construct an ENet packet by serialising the given message.
81  * @return NULL on failure
82  */
83  static ENetPacket* CreatePacket(const CNetMessage* message);
84 
85  /**
86  * Initialize ENet.
87  * This must be called before any other networking code.
88  */
89  static void Initialize();
90 
91  /**
92  * Deinitialize ENet.
93  */
94  static void Deinitialize();
95 };
96 
97 #endif // NETHOST_H
std::map< CStr, PlayerAssignment > PlayerAssignmentMap
Definition: NetHost.h:51
CStrW m_Name
Player name.
Definition: NetHost.h:45
#define i32
Definition: types.h:36
i32 m_PlayerID
The player that the given host controls, or -1 if none (observer)
Definition: NetHost.h:48
NetDisconnectReason
Reasons sent by server to clients in disconnection messages.
Definition: NetHost.h:57
struct _ENetPeer ENetPeer
Definition: NetHost.h:30
static bool SendMessage(const CNetMessage *message, ENetPeer *peer, const char *peerName)
Transmit a message to the given peer.
Definition: NetHost.cpp:26
static void Initialize()
Initialize ENet.
Definition: NetHost.cpp:70
static ENetPacket * CreatePacket(const CNetMessage *message)
Construct an ENet packet by serialising the given message.
Definition: NetHost.cpp:49
The base class for all network messages exchanged within the game.
Definition: NetMessage.h:32
struct _ENetPacket ENetPacket
Definition: NetHost.h:31
bool m_Enabled
Whether the player is currently connected and active.
Definition: NetHost.h:42
struct _ENetHost ENetHost
Definition: NetHost.h:32
static const int DEFAULT_CHANNEL
Definition: NetHost.h:68
static void Deinitialize()
Deinitialize ENet.
Definition: NetHost.cpp:76