34 class CPlayerAssignmentMessage;
168 void KickPlayer(
const CStrW& playerName,
const bool ban);
173 bool Broadcast(
const CNetMessage* message,
const std::vector<NetServerSessionState>& targetStates);
194 void AssignPlayer(
int playerID,
const CStr& guid);
212 static CStrW SanitisePlayerName(
const CStrW& original);
217 CStrW DeduplicatePlayerName(
const CStrW& original);
230 void AddPlayer(
const CStr& guid,
const CStrW& name);
231 void RemovePlayer(
const CStr& guid);
232 void SendPlayerAssignments();
241 static bool OnClientHandshake(
void* context,
CFsmEvent* event);
242 static bool OnAuthenticate(
void* context,
CFsmEvent* event);
243 static bool OnInGame(
void* context,
CFsmEvent* event);
244 static bool OnChat(
void* context,
CFsmEvent* event);
245 static bool OnReady(
void* context,
CFsmEvent* event);
246 static bool OnClearAllReady(
void* context,
CFsmEvent* event);
247 static bool OnGameSetup(
void* context,
CFsmEvent* event);
248 static bool OnAssignPlayer(
void* context,
CFsmEvent* event);
249 static bool OnStartGame(
void* context,
CFsmEvent* event);
250 static bool OnLoadedGame(
void* context,
CFsmEvent* event);
251 static bool OnJoinSyncingLoadedGame(
void* context,
CFsmEvent* event);
252 static bool OnRejoined(
void* context,
CFsmEvent* event);
253 static bool OnKickPlayer(
void* context,
CFsmEvent* event);
254 static bool OnDisconnect(
void* context,
CFsmEvent* event);
255 static bool OnClientPaused(
void* context,
CFsmEvent* event);
265 void ConstructPlayerAssignmentMessage(CPlayerAssignmentMessage& message);
272 void CheckClientConnections();
336 #if CONFIG2_MINIUPNPC 340 static void* SetupUPnP(
void*);
344 static void* RunThread(
void* data);
362 #endif // NETSERVER_H pthread_t m_WorkerThread
Definition: NetServer.h:348
ScriptInterface * m_ScriptInterface
Internal script context for (de)serializing script messages, and for storing game attributes...
Definition: NetServer.h:280
void StartGame()
Call from the GUI to asynchronously notify all clients that they should start loading the game...
Definition: NetServer.cpp:1466
std::map< CStr, PlayerAssignment > PlayerAssignmentMap
Definition: NetHost.h:54
std::vector< CStr > m_PausingPlayers
Holds the GUIDs of all currently paused players.
Definition: NetServer.h:307
CStr m_HostGUID
Definition: NetServer.h:313
std::vector< std::vector< CSimulationMessage > > m_SavedCommands
A copy of all simulation commands received so far, indexed by turn number, to simplify support for re...
Definition: NetServer.h:320
uint16_t u16
Definition: types.h:38
std::string m_JoinSyncFile
The latest copy of the simulation state, received from an existing client when a new client has asked...
Definition: NetServer.h:326
Represents a signal in the state machine that a change has occurred.
Definition: fsm.h:53
Async task for receiving the initial game state to be forwarded to another client that is rejoining a...
Definition: NetServer.cpp:79
std::vector< CStrW > m_BannedPlayers
Definition: NetServer.h:302
u32 m_NextHostID
Definition: NetServer.h:309
Definition: NetServer.h:55
Definition: NetServer.h:76
struct _ENetPeer ENetPeer
Definition: NetHost.h:30
A non-recursive mutual exclusion lock.
Definition: ThreadUtil.h:45
void UpdateGameAttributes(JS::MutableHandleValue attrs, ScriptInterface &scriptInterface)
Call from the GUI to update the game setup attributes.
Definition: NetServer.cpp:1472
NetServerState
Definition: NetServer.h:40
pthread_t m_UPnPThread
Definition: NetServer.h:341
std::vector< std::string > m_GameAttributesQueue
Definition: NetServer.h:355
CNetServer(int autostartPlayers=-1)
Construct a new network server.
Definition: NetServer.cpp:1451
Definition: NetServer.h:81
std::time_t m_LastConnectionCheck
Time when the clients connections were last checked for timeouts and latency.
Definition: NetServer.h:331
void SetTurnLength(u32 msecs)
Set the turn length to a fixed value.
Definition: NetServer.cpp:1482
JS::PersistentRootedValue m_GameAttributes
Stores the most current game attributes.
Definition: NetServer.h:287
uint32_t u32
Definition: types.h:39
Various declarations shared by networking code.
void ClearAllPlayerReady(ScriptInterface::CxPrivate *pCxPrivate)
Definition: ScriptFunctions.cpp:429
bool m_Shutdown
Definition: NetServer.h:351
~CNetServer()
Definition: NetServer.cpp:1456
ENetHost * m_Host
Definition: NetServer.h:291
NetServerSessionState
Server session representation of client state.
Definition: NetServer.h:65
Network server interface.
Definition: NetServer.h:98
ENet connection statistics profiler table.
Definition: NetStats.h:36
std::vector< bool > m_StartGameQueue
Definition: NetServer.h:354
std::vector< u32 > m_TurnLengthQueue
Definition: NetServer.h:356
std::vector< CNetServerSession * > m_Sessions
Definition: NetServer.h:292
Definition: NetServer.h:89
The base class for all network messages exchanged within the game.
Definition: NetMessage.h:32
int m_AutostartPlayers
Definition: NetServer.h:289
void KickPlayer(ScriptInterface::CxPrivate *pCxPrivate, const CStrW &playerName, bool ban)
Definition: ScriptFunctions.cpp:402
Definition: NetServer.h:52
CNetServerWorker * m_Worker
Definition: NetServer.h:138
CNetStatsTable * m_Stats
Definition: NetServer.h:294
uintptr_t pthread_t
Definition: wpthread.h:63
CStrW m_WelcomeMessage
Definition: NetServer.h:299
struct _ENetHost ENetHost
Definition: NetHost.h:32
std::vector< u32 > m_BannedIPs
Definition: NetServer.h:301
NetServerState m_State
Definition: NetServer.h:296
Abstraction around a SpiderMonkey JSContext.
Definition: ScriptInterface.h:71
Definition: NetServer.h:44
Definition: NetServer.h:68
CStrW m_ServerName
Definition: NetServer.h:298
CNetServerTurnManager * m_ServerTurnManager
Definition: NetServer.h:311
PlayerAssignmentMap m_PlayerAssignments
Definition: NetServer.h:282
Definition: NetServer.h:59
Network server worker thread.
Definition: NetServer.h:153
The server's end of a network session.
Definition: NetSession.h:127
Definition: NetServer.h:85
bool SetupConnection(const u16 port)
Begin listening for network connections.
Definition: NetServer.cpp:1461
CMutex m_WorkerMutex
Definition: NetServer.h:349
The server-side counterpart to CNetClientTurnManager.
Definition: NetServerTurnManager.h:34
CNetServer * g_NetServer
Global network server for the standard game.
Definition: NetServer.cpp:64
Definition: NetServer.h:49
Special message type for simulation commands.
Definition: NetMessage.h:113
static Status Run(const Operation &op, const Parameters &p=Parameters(), const CompletedHook &completedHook=CompletedHook(), const IssueHook &issueHook=IssueHook())
Definition: io.h:233
Definition: NetServer.h:72