|
R-Type
Distributed multiplayer game engine in C++
|
R-Type server application. More...
#include <Server.hpp>

Public Member Functions | |
| Server (uint16_t port, size_t maxClients=32) | |
| Constructor. | |
| ~Server () | |
| Destructor - clean shutdown. | |
| bool | initialize () |
| Initialize server systems. | |
| void | run () |
| Run the server (blocking until exit) | |
| void | stop () |
| Stop the server. | |
| std::shared_ptr< server::Lobby > | getLobby () const |
| Get the lobby instance (for commands) | |
| void | notifyRoomUpdate (std::shared_ptr< server::Room > room) |
| Notify all players in a room of state changes (for commands) | |
| bool | kickPlayer (uint32_t playerId) |
| Kick a player from their current room (for commands) | |
Private Member Functions | |
| void | handlePacket (HostNetworkEvent &event) |
| Handle incoming packet from client. | |
| void | _handleHandshakeRequest (HostNetworkEvent &event) |
| Handle player handshake/connection request. | |
| void | _handleRegisterRequest (HostNetworkEvent &event) |
| Handle player registration request. | |
| void | _handleLoginRequest (HostNetworkEvent &event) |
| Handle player login request. | |
| void | _handlePlayerInput (HostNetworkEvent &event) |
| Handle player input packet. | |
| void | _handleDisconnect (HostNetworkEvent &event) |
| Handle player disconnect. | |
| void | _handleListRooms (HostNetworkEvent &event) |
| Handle list rooms request. | |
| void | _handleCreateRoom (HostNetworkEvent &event) |
| Handle create room request. | |
| void | _handleJoinRoom (HostNetworkEvent &event) |
| Handle join room request. | |
| void | _handleAutoMatchmaking (HostNetworkEvent &event) |
| Handle auto-matchmaking request. | |
| void | _handleUpdateAutoMatchmakingPref (HostNetworkEvent &event) |
| Handle auto-matchmaking preference update (without triggering matchmaking) | |
| void | _onMatchmakingRoomCreated (std::shared_ptr< server::Room > room) |
| Called when matchmaking service creates a room with matched players. | |
| void | _handleLeaveRoom (HostNetworkEvent &event) |
| Handle leave room request. | |
| void | _handleStartGame (HostNetworkEvent &event) |
| Handle start game request (from room host) | |
| void | _handleChatMessage (HostNetworkEvent &event) |
| Handle chat message from client. | |
| void | _broadcastGameState () |
| Broadcast game state to all connected clients. | |
| void | _processPendingDestructions () |
| Process entities marked with PendingDestroy component. | |
| void | _sendGameStartToRoom (std::shared_ptr< server::Room > room) |
| Send GameStart message to all players in a room. | |
| void | _sendGameStartToSpectator (uint32_t spectatorId, std::shared_ptr< server::Room > room) |
| Send GameStart message to a spectator joining an in-progress game. | |
| void | _broadcastRoomState (std::shared_ptr< server::Room > room) |
| Broadcast room state (player list) to all players in a room. | |
| void | _broadcastRoomList (const std::vector< IPeer * > &specificPeers) |
| Broadcast room list to specific peers only. | |
| void | _broadcastRoomListToAll () |
| Broadcast room list to ALL connected players on the server. | |
| RType::Messages::S2C::EntityState | _serializeEntity (ecs::wrapper::Entity &entity, server::IGameLogic *gameLogic=nullptr) |
| Serialize a single entity to network format. | |
| void | _actionToInput (RType::Messages::Shared::Action action, int &dx, int &dy, bool &shoot) |
| Convert Action enum to directional input (dx, dy) | |
| std::shared_ptr< server::Session > | _getSessionFromPeer (IPeer *peer) |
| Helper to get session from peer. | |
| void | _sendPacket (IPeer *peer, NetworkMessages::MessageType type, const std::vector< uint8_t > &payload, bool reliable=true) |
| Helper to send a packet to a peer. | |
| std::vector< RType::Messages::S2C::EntityState > | _serializeEntities (std::shared_ptr< ecs::wrapper::ECSWorld > world, server::IGameLogic *gameLogic=nullptr) |
| Helper to serialize all entities in a world. | |
| void | _sendSystemMessage (uint32_t playerId, const std::string &message) |
| Send a system message to a specific player. | |
| void | _sendKickedNotification (uint32_t playerId) |
| Send room list to kicked player to return them to lobby. | |
Private Attributes | |
| uint16_t | _port |
| size_t | _maxClients |
| std::unique_ptr< ServerNetworkManager > | _networkManager |
| std::shared_ptr< server::EventBus > | _eventBus |
| std::shared_ptr< server::SessionManager > | _sessionManager |
| std::shared_ptr< server::RoomManager > | _roomManager |
| std::shared_ptr< server::Lobby > | _lobby |
| std::unique_ptr< server::CommandHandler > | _commandHandler |
| std::unordered_map< std::string, IPeer * > | _sessionPeers |
| std::unordered_map< IPeer *, std::string > | _peerToSession |
| std::unordered_map< uint32_t, std::string > | _playerIdToSessionId |
| std::unordered_map< uint32_t, std::string > | _playerIdToUsername |
| bool | _initialized = false |
| bool | _running = false |
| server::FrameTimer | _frameTimer |
R-Type server application.
Encapsulates the entire server with proper architecture:
Architecture: Server ├── SessionManager (track connected players) ├── RoomManager (manage game instances) │ └── Room (contains players + game loop) │ └── ServerLoop (60 Hz) │ └── World (wraps ECS Registry) │ └── GameLogic (8 systems) └── EventBus (global events)
THREAD 1: Network (ServerNetworkManager) THREAD 2: Game loop per room (ECS + broadcast)
Usage:
Definition at line 74 of file Server.hpp.
|
explicit |
Constructor.
| port | Port to listen on |
| maxClients | Maximum number of clients |
Definition at line 50 of file Server.cpp.
| Server::~Server | ( | ) |
Destructor - clean shutdown.
Definition at line 52 of file Server.cpp.
References deinitializeNetworking(), LOG_INFO, and stop().

|
private |
Convert Action enum to directional input (dx, dy)
| action | The action to convert |
| dx | Output: X direction (-1, 0, 1) |
| dy | Output: Y direction (-1, 0, 1) |
| shoot | Output: true if shooting |
Definition at line 1823 of file Server.cpp.
Referenced by _handlePlayerInput().
|
private |
Broadcast game state to all connected clients.
Definition at line 1302 of file Server.cpp.
References _playerIdToSessionId, _roomManager, _serializeEntity(), _sessionPeers, NetworkMessages::createMessage(), createPacket(), RType::Messages::S2C::GameState::entities, server::ServerLoop::getCurrentTick(), server::ServerLoop::getECSWorld(), LOG_ERROR, NetworkMessages::S2C_GAME_STATE, RType::Messages::S2C::GameState::serialize(), RType::Messages::S2C::GameState::serverTick, and UNSEQUENCED.
Referenced by run().

|
private |
Broadcast room list to specific peers only.
| specificPeers | Vector of peers to send to (used when player requests list) |
Definition at line 1881 of file Server.cpp.
References _roomManager, _sendPacket(), server::FINISHED, server::IN_PROGRESS, RType::Messages::S2C::RoomInfoData::isPrivate, LOG_INFO, RType::Messages::S2C::RoomInfoData::maxPlayers, RType::Messages::S2C::RoomInfoData::playerCount, RType::Messages::S2C::RoomInfoData::roomId, RType::Messages::S2C::RoomInfoData::roomName, RType::Messages::S2C::RoomList::rooms, NetworkMessages::S2C_ROOM_LIST, RType::Messages::S2C::RoomList::serialize(), server::STARTING, RType::Messages::S2C::RoomInfoData::state, and server::WAITING.
Referenced by _handleListRooms().

|
private |
Broadcast room list to ALL connected players on the server.
This sends the room list to everyone connected, regardless of whether they are in the lobby or already in a room. All players should be able to see all public rooms at all times.
Definition at line 1924 of file Server.cpp.
References _roomManager, _sendPacket(), _sessionPeers, server::FINISHED, server::IN_PROGRESS, RType::Messages::S2C::RoomInfoData::isPrivate, LOG_INFO, RType::Messages::S2C::RoomInfoData::maxPlayers, RType::Messages::S2C::RoomInfoData::playerCount, RType::Messages::S2C::RoomInfoData::roomId, RType::Messages::S2C::RoomInfoData::roomName, RType::Messages::S2C::RoomList::rooms, NetworkMessages::S2C_ROOM_LIST, RType::Messages::S2C::RoomList::serialize(), server::STARTING, RType::Messages::S2C::RoomInfoData::state, and server::WAITING.
Referenced by _handleAutoMatchmaking(), _handleCreateRoom(), _handleDisconnect(), _handleJoinRoom(), _handleLeaveRoom(), _onMatchmakingRoomCreated(), kickPlayer(), notifyRoomUpdate(), and run().

|
private |
Broadcast room state (player list) to all players in a room.
| room | Room to broadcast state for |
Definition at line 1653 of file Server.cpp.
References _lobby, _playerIdToSessionId, _sendPacket(), _sessionManager, _sessionPeers, RType::Messages::S2C::RoomState::currentPlayers, RType::Messages::S2C::PlayerData::isHost, RType::Messages::S2C::PlayerData::isSpectator, LOG_INFO, RType::Messages::S2C::RoomState::maxPlayers, RType::Messages::S2C::PlayerData::playerId, RType::Messages::S2C::PlayerData::playerName, server::LobbyPlayer::playerName, RType::Messages::S2C::RoomState::players, RType::Messages::S2C::RoomState::roomId, RType::Messages::S2C::RoomState::roomName, NetworkMessages::S2C_ROOM_STATE, RType::Messages::S2C::RoomState::serialize(), and RType::Messages::S2C::RoomState::state.
Referenced by _handleAutoMatchmaking(), _handleCreateRoom(), _handleDisconnect(), _handleJoinRoom(), _handleLeaveRoom(), _onMatchmakingRoomCreated(), kickPlayer(), and notifyRoomUpdate().

|
private |
Helper to get session from peer.
Definition at line 1844 of file Server.cpp.
References _peerToSession, and _sessionManager.
Referenced by _handleAutoMatchmaking(), _handleChatMessage(), _handleCreateRoom(), _handleDisconnect(), _handleJoinRoom(), _handleLeaveRoom(), _handlePlayerInput(), _handleStartGame(), and _handleUpdateAutoMatchmakingPref().
|
private |
Handle auto-matchmaking request.
| event | Network event containing AutoMatchmaking message |
Definition at line 726 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _getSessionFromPeer(), _playerIdToUsername, _roomManager, _sendGameStartToSpectator(), _sendPacket(), RType::Messages::C2S::AutoMatchmaking::enabled, NetworkMessages::getPayload(), server::IN_PROGRESS, LOG_ERROR, LOG_INFO, HostNetworkEvent::packet, HostNetworkEvent::peer, NetworkMessages::S2C_JOINED_ROOM, and RType::Messages::S2C::JoinedRoom::serialize().
Referenced by handlePacket().

|
private |
Handle chat message from client.
| event | Network event with packet data |
Definition at line 1008 of file Server.cpp.
References _commandHandler, _getSessionFromPeer(), _lobby, _playerIdToSessionId, _roomManager, _sendPacket(), _sendSystemMessage(), _sessionPeers, NetworkMessages::createMessage(), NetworkMessages::getPayload(), LOG_DEBUG, LOG_ERROR, LOG_INFO, LOG_WARNING, HostNetworkEvent::packet, HostNetworkEvent::peer, server::LobbyPlayer::playerName, NetworkMessages::S2C_CHAT_MESSAGE, and RType::Messages::S2C::S2CChatMessage::serialize().
Referenced by handlePacket().

|
private |
Handle create room request.
| event | Network event with packet data |
Definition at line 587 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _getSessionFromPeer(), _roomManager, _sendPacket(), RType::Messages::C2S::CreateRoom::gameSpeedMultiplier, NetworkMessages::getPayload(), RType::Messages::C2S::CreateRoom::isPrivate, LOG_ERROR, LOG_INFO, RType::Messages::C2S::CreateRoom::maxPlayers, HostNetworkEvent::packet, HostNetworkEvent::peer, RType::Messages::C2S::CreateRoom::roomName, NetworkMessages::S2C_ROOM_CREATED, and RType::Messages::S2C::RoomCreated::serialize().
Referenced by handlePacket().

|
private |
Handle player disconnect.
| event | Network event with peer info |
Definition at line 222 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _eventBus, _getSessionFromPeer(), _peerToSession, _playerIdToSessionId, _roomManager, _sessionManager, _sessionPeers, LOG_INFO, and HostNetworkEvent::peer.
Referenced by handlePacket().

|
private |
Handle player handshake/connection request.
| event | Network event with packet data |
Definition at line 266 of file Server.cpp.
References _lobby, _peerToSession, _playerIdToSessionId, _sendPacket(), _sessionManager, _sessionPeers, RType::Messages::Connection::HandshakeResponse::accepted, NetworkMessages::createConnectResponse(), NetworkMessages::createMessage(), createPacket(), NetworkMessages::getPayload(), NetworkMessages::HANDSHAKE_RESPONSE, LOG_ERROR, LOG_INFO, LOG_WARNING, RType::Messages::Connection::HandshakeResponse::message, HostNetworkEvent::packet, ConnectionMessages::HandshakeRequestData::password, HostNetworkEvent::peer, RType::Messages::Connection::HandshakeResponse::playerId, ConnectionMessages::HandshakeRequestData::playerName, RType::Messages::Connection::HandshakeResponse::playerName, RELIABLE, server::GameruleBroadcaster::sendAllGamerules(), RType::Messages::Connection::HandshakeResponse::serialize(), RType::Messages::Connection::HandshakeResponse::serverId, RType::Messages::Connection::HandshakeResponse::serverVersion, RType::Messages::Connection::HandshakeResponse::sessionId, and ConnectionMessages::HandshakeRequestData::username.
Referenced by handlePacket().

|
private |
Handle join room request.
| event | Network event with packet data |
Definition at line 650 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _getSessionFromPeer(), _roomManager, _sendGameStartToSpectator(), _sendPacket(), NetworkMessages::getPayload(), server::IN_PROGRESS, LOG_ERROR, LOG_INFO, HostNetworkEvent::packet, HostNetworkEvent::peer, RType::Messages::C2S::JoinRoom::roomId, NetworkMessages::S2C_JOINED_ROOM, and RType::Messages::S2C::JoinedRoom::serialize().
Referenced by handlePacket().

|
private |
Handle leave room request.
| event | Network event with packet data |
Definition at line 964 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _getSessionFromPeer(), _roomManager, _sendPacket(), LOG_INFO, LOG_WARNING, HostNetworkEvent::peer, NetworkMessages::S2C_LEFT_ROOM, and RType::Messages::S2C::LeftRoom::serialize().
Referenced by handlePacket().

|
private |
Handle list rooms request.
| event | Network event with packet data |
Definition at line 578 of file Server.cpp.
References _broadcastRoomList(), and LOG_INFO.
Referenced by handlePacket().

|
private |
Handle player login request.
| event | Network event with packet data |
Definition at line 456 of file Server.cpp.
References _lobby, _peerToSession, _playerIdToUsername, _sendPacket(), _sessionManager, RType::Messages::S2C::LoginResponse::autoMatchmaking, NetworkMessages::getPayload(), LOG_INFO, LOG_WARNING, NetworkMessages::LOGIN_RESPONSE, RType::Messages::S2C::LoginResponse::message, HostNetworkEvent::packet, RType::Messages::C2S::LoginAccount::password, HostNetworkEvent::peer, RType::Messages::S2C::LoginResponse::serialize(), RType::Messages::S2C::LoginResponse::sessionToken, RType::Messages::S2C::LoginResponse::success, and RType::Messages::C2S::LoginAccount::username.
Referenced by handlePacket().

|
private |
Handle player input packet.
| event | Network event with packet data |
Definition at line 516 of file Server.cpp.
References _actionToInput(), _getSessionFromPeer(), _roomManager, NetworkMessages::getPayload(), RType::Messages::C2S::PlayerInput::inputs, LOG_WARNING, HostNetworkEvent::packet, and HostNetworkEvent::peer.
Referenced by handlePacket().

|
private |
Handle player registration request.
| event | Network event with packet data |
Definition at line 422 of file Server.cpp.
References _sendPacket(), _sessionManager, NetworkMessages::getPayload(), LOG_INFO, LOG_WARNING, RType::Messages::S2C::RegisterResponse::message, HostNetworkEvent::packet, RType::Messages::C2S::RegisterAccount::password, HostNetworkEvent::peer, NetworkMessages::REGISTER_RESPONSE, RType::Messages::S2C::RegisterResponse::serialize(), RType::Messages::S2C::RegisterResponse::success, and RType::Messages::C2S::RegisterAccount::username.
Referenced by handlePacket().

|
private |
Handle start game request (from room host)
| event | Network event with packet data |
Definition at line 931 of file Server.cpp.
References _getSessionFromPeer(), _roomManager, LOG_INFO, LOG_WARNING, HostNetworkEvent::peer, and server::WAITING.
Referenced by handlePacket().

|
private |
Handle auto-matchmaking preference update (without triggering matchmaking)
| event | Network event containing AutoMatchmaking message |
Definition at line 894 of file Server.cpp.
References _getSessionFromPeer(), _playerIdToUsername, _sessionManager, RType::Messages::C2S::AutoMatchmaking::enabled, NetworkMessages::getPayload(), LOG_ERROR, LOG_INFO, LOG_WARNING, HostNetworkEvent::packet, and HostNetworkEvent::peer.
Referenced by handlePacket().

|
private |
Called when matchmaking service creates a room with matched players.
| room | Newly created room with players |
Definition at line 855 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _playerIdToSessionId, _sendPacket(), _sessionPeers, LOG_INFO, LOG_WARNING, NetworkMessages::S2C_JOINED_ROOM, and RType::Messages::S2C::JoinedRoom::serialize().
Referenced by initialize().

|
private |
Process entities marked with PendingDestroy component.
Sends EntityDestroyed messages to clients and removes entities from the registry. This ensures clients properly cleanup entities instead of interpolating to old positions.
Definition at line 1368 of file Server.cpp.
References _playerIdToSessionId, _roomManager, _sessionPeers, NetworkMessages::createMessage(), createPacket(), ecs::Expired, server::ServerLoop::getECSWorld(), ecs::PendingDestroy::getReason(), ecs::Killed, LOG_DEBUG, LOG_INFO, ecs::Manual, ecs::OutOfBounds, RELIABLE, NetworkMessages::S2C_ENTITY_DESTROYED, and RType::Messages::S2C::EntityDestroyed::serialize().
Referenced by run().

|
private |
Send GameStart message to all players in a room.
| room | Room that just started |
Definition at line 1462 of file Server.cpp.
References _playerIdToSessionId, _sendPacket(), _serializeEntities(), _sessionPeers, RType::Messages::S2C::MapConfig::background, RType::Messages::S2C::GameState::entities, GAME_SPEED_MULTIPLIER, server::ServerLoop::getCurrentTick(), server::ServerLoop::getECSWorld(), server::IN_PROGRESS, RType::Messages::S2C::GameStart::initialState, LOG_DEBUG, LOG_ERROR, LOG_INFO, RType::Messages::S2C::GameStart::mapConfig, RType::Messages::S2C::MapConfig::parallaxBackground, RType::Messages::S2C::MapConfig::parallaxSpeedFactor, NetworkMessages::S2C_GAME_START, RType::Messages::S2C::MapConfig::scrollSpeed, server::GameruleBroadcaster::sendAllGamerules(), server::GameruleBroadcaster::sendGamerule(), RType::Messages::S2C::GameStart::serialize(), RType::Messages::S2C::GameState::serverTick, and RType::Messages::S2C::GameStart::yourEntityId.
Referenced by run().

|
private |
Send GameStart message to a spectator joining an in-progress game.
| spectatorId | ID of the spectator |
| room | Room to get current game state from |
Definition at line 1583 of file Server.cpp.
References _playerIdToSessionId, _sendPacket(), _serializeEntities(), _sessionPeers, RType::Messages::S2C::MapConfig::background, RType::Messages::S2C::GameState::entities, server::ServerLoop::getCurrentTick(), server::ServerLoop::getECSWorld(), server::IN_PROGRESS, RType::Messages::S2C::GameStart::initialState, LOG_ERROR, LOG_INFO, RType::Messages::S2C::GameStart::mapConfig, RType::Messages::S2C::MapConfig::parallaxBackground, RType::Messages::S2C::MapConfig::parallaxSpeedFactor, NetworkMessages::S2C_GAME_START, RType::Messages::S2C::MapConfig::scrollSpeed, server::GameruleBroadcaster::sendAllGamerules(), RType::Messages::S2C::GameStart::serialize(), RType::Messages::S2C::GameState::serverTick, and RType::Messages::S2C::GameStart::yourEntityId.
Referenced by _handleAutoMatchmaking(), and _handleJoinRoom().

|
private |
Send room list to kicked player to return them to lobby.
| playerId | Player ID that was kicked |
Definition at line 1157 of file Server.cpp.
References _playerIdToSessionId, _sendPacket(), _sessionPeers, LOG_DEBUG, LOG_INFO, LOG_WARNING, NetworkMessages::S2C_LEFT_ROOM, and RType::Messages::S2C::LeftRoom::serialize().
Referenced by kickPlayer().

|
private |
Helper to send a packet to a peer.
Definition at line 1852 of file Server.cpp.
References NetworkMessages::createMessage(), createPacket(), RELIABLE, IPeer::send(), and UNSEQUENCED.
Referenced by _broadcastRoomList(), _broadcastRoomListToAll(), _broadcastRoomState(), _handleAutoMatchmaking(), _handleChatMessage(), _handleCreateRoom(), _handleHandshakeRequest(), _handleJoinRoom(), _handleLeaveRoom(), _handleLoginRequest(), _handleRegisterRequest(), _onMatchmakingRoomCreated(), _sendGameStartToRoom(), _sendGameStartToSpectator(), _sendKickedNotification(), _sendSystemMessage(), and initialize().

|
private |
Send a system message to a specific player.
| playerId | Player ID to send to |
| message | Message text |
Definition at line 1115 of file Server.cpp.
References _playerIdToSessionId, _sendPacket(), _sessionPeers, LOG_DEBUG, NetworkMessages::S2C_CHAT_MESSAGE, and RType::Messages::S2C::S2CChatMessage::serialize().
Referenced by _handleChatMessage(), and kickPlayer().

|
private |
Helper to serialize all entities in a world.
Definition at line 1864 of file Server.cpp.
References _serializeEntity(), and LOG_ERROR.
Referenced by _sendGameStartToRoom(), and _sendGameStartToSpectator().

|
private |
Serialize a single entity to network format.
| entity | The entity to serialize |
Serialize entity to EntityState
| entity | ECS Entity |
| gameLogic | Optional pointer to GameLogic (to retrieve player input state) |
Definition at line 1749 of file Server.cpp.
References RType::Messages::S2C::EntityState::currentAnimation, RType::Messages::S2C::EntityState::entityId, ecs::wrapper::Entity::get(), ecs::wrapper::Entity::getAddress(), ecs::Health::getCurrentHealth(), ecs::Enemy::getEnemyType(), server::IGameLogic::getLastProcessedInput(), ecs::Player::getPlayerId(), ecs::Transform::getPosition(), ecs::Sprite::getSourceRect(), ecs::wrapper::Entity::has(), RType::Messages::S2C::EntityState::health, ecs::Projectile::isFriendly(), RType::Messages::S2C::EntityState::lastProcessedInput, RType::Messages::S2C::EntityState::position, RType::Messages::S2C::EntityState::spriteH, RType::Messages::S2C::EntityState::spriteW, RType::Messages::S2C::EntityState::spriteX, RType::Messages::S2C::EntityState::spriteY, RType::Messages::S2C::EntityState::type, ecs::Transform::Vector2::x, RType::Messages::Shared::Vec2::x, ecs::Transform::Vector2::y, and RType::Messages::Shared::Vec2::y.
Referenced by _broadcastGameState(), and _serializeEntities().

|
inline |
Get the lobby instance (for commands)
Definition at line 299 of file Server.hpp.
References _lobby.
Referenced by server::ListCommand::execute().
|
private |
Handle incoming packet from client.
| event | Network event with packet data |
Definition at line 148 of file Server.cpp.
References _handleAutoMatchmaking(), _handleChatMessage(), _handleCreateRoom(), _handleDisconnect(), _handleHandshakeRequest(), _handleJoinRoom(), _handleLeaveRoom(), _handleListRooms(), _handleLoginRequest(), _handlePlayerInput(), _handleRegisterRequest(), _handleStartGame(), _handleUpdateAutoMatchmakingPref(), NetworkMessages::C2S_AUTO_MATCHMAKING, NetworkMessages::C2S_CHAT_MESSAGE, NetworkMessages::C2S_CREATE_ROOM, NetworkMessages::C2S_JOIN_ROOM, NetworkMessages::C2S_LEAVE_ROOM, NetworkMessages::C2S_LIST_ROOMS, NetworkMessages::C2S_PLAYER_INPUT, NetworkMessages::C2S_START_GAME, NetworkMessages::C2S_UPDATE_AUTO_MM_PREF, DISCONNECT, NetworkMessages::getMessageType(), NetworkMessages::HANDSHAKE_REQUEST, LOG_ERROR, LOG_WARNING, NetworkMessages::LOGIN_REQUEST, HostNetworkEvent::packet, HostNetworkEvent::peer, NetworkMessages::REGISTER_REQUEST, and HostNetworkEvent::type.
Referenced by initialize().

| bool Server::initialize | ( | ) |
Initialize server systems.
Definition at line 58 of file Server.cpp.
References _commandHandler, _eventBus, _initialized, _lobby, _maxClients, _networkManager, _onMatchmakingRoomCreated(), _playerIdToSessionId, _port, _roomManager, _sendPacket(), _sessionManager, _sessionPeers, handlePacket(), initializeNetworking(), LOG_ERROR, LOG_INFO, NetworkMessages::S2C_GAME_OVER, and RType::Messages::S2C::GameOver::serialize().

| bool Server::kickPlayer | ( | uint32_t | playerId | ) |
Kick a player from their current room (for commands)
| playerId | Player ID to kick |
Definition at line 1200 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), _eventBus, _roomManager, _sendKickedNotification(), _sendSystemMessage(), LOG_INFO, and LOG_WARNING.
Referenced by server::KickCommand::execute().

| void Server::notifyRoomUpdate | ( | std::shared_ptr< server::Room > | room | ) |
Notify all players in a room of state changes (for commands)
| room | Room to broadcast state for |
Definition at line 1187 of file Server.cpp.
References _broadcastRoomListToAll(), _broadcastRoomState(), LOG_DEBUG, and LOG_WARNING.

| void Server::run | ( | ) |
Run the server (blocking until exit)
Definition at line 1235 of file Server.cpp.
References _broadcastGameState(), _broadcastRoomListToAll(), _eventBus, _frameTimer, _initialized, _maxClients, _networkManager, _port, _processPendingDestructions(), _roomManager, _running, _sendGameStartToRoom(), server::IN_PROGRESS, LOG_ERROR, LOG_INFO, server::FrameTimer::reset(), server::FrameTimer::sleepMilliseconds(), and server::FrameTimer::tick().

| void Server::stop | ( | ) |
Stop the server.
Definition at line 1282 of file Server.cpp.
References _eventBus, _networkManager, _roomManager, _running, and LOG_INFO.
Referenced by ~Server().
|
private |
Definition at line 325 of file Server.hpp.
Referenced by _handleChatMessage(), and initialize().
|
private |
Definition at line 319 of file Server.hpp.
Referenced by _handleDisconnect(), initialize(), kickPlayer(), run(), and stop().
|
private |
Definition at line 342 of file Server.hpp.
Referenced by run().
|
private |
Definition at line 338 of file Server.hpp.
Referenced by initialize(), and run().
|
private |
Definition at line 324 of file Server.hpp.
Referenced by _broadcastRoomState(), _handleChatMessage(), _handleHandshakeRequest(), _handleLoginRequest(), getLobby(), and initialize().
|
private |
Definition at line 316 of file Server.hpp.
Referenced by initialize(), and run().
|
private |
Definition at line 318 of file Server.hpp.
Referenced by initialize(), run(), and stop().
|
private |
Definition at line 332 of file Server.hpp.
Referenced by _getSessionFromPeer(), _handleDisconnect(), _handleHandshakeRequest(), and _handleLoginRequest().
|
private |
Definition at line 334 of file Server.hpp.
Referenced by _broadcastGameState(), _broadcastRoomState(), _handleChatMessage(), _handleDisconnect(), _handleHandshakeRequest(), _onMatchmakingRoomCreated(), _processPendingDestructions(), _sendGameStartToRoom(), _sendGameStartToSpectator(), _sendKickedNotification(), _sendSystemMessage(), and initialize().
|
private |
Definition at line 336 of file Server.hpp.
Referenced by _handleAutoMatchmaking(), _handleLoginRequest(), and _handleUpdateAutoMatchmakingPref().
|
private |
Definition at line 315 of file Server.hpp.
Referenced by initialize(), and run().
|
private |
Definition at line 323 of file Server.hpp.
Referenced by _broadcastGameState(), _broadcastRoomList(), _broadcastRoomListToAll(), _handleAutoMatchmaking(), _handleChatMessage(), _handleCreateRoom(), _handleDisconnect(), _handleJoinRoom(), _handleLeaveRoom(), _handlePlayerInput(), _handleStartGame(), _processPendingDestructions(), initialize(), kickPlayer(), run(), and stop().
|
private |
Definition at line 339 of file Server.hpp.
|
private |
Definition at line 322 of file Server.hpp.
Referenced by _broadcastRoomState(), _getSessionFromPeer(), _handleDisconnect(), _handleHandshakeRequest(), _handleLoginRequest(), _handleRegisterRequest(), _handleUpdateAutoMatchmakingPref(), and initialize().
|
private |
Definition at line 330 of file Server.hpp.
Referenced by _broadcastGameState(), _broadcastRoomListToAll(), _broadcastRoomState(), _handleChatMessage(), _handleDisconnect(), _handleHandshakeRequest(), _onMatchmakingRoomCreated(), _processPendingDestructions(), _sendGameStartToRoom(), _sendGameStartToSpectator(), _sendKickedNotification(), _sendSystemMessage(), and initialize().