R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
server::RoomManager Class Reference

Manages all game rooms and matchmaking. More...

#include <RoomManager.hpp>

Inheritance diagram for server::RoomManager:
Inheritance graph
Collaboration diagram for server::RoomManager:
Collaboration graph

Public Member Functions

 RoomManager ()
 
 RoomManager (std::shared_ptr< MatchmakingService > matchmaking, std::shared_ptr< EventBus > eventBus=nullptr)
 
 ~RoomManager () override=default
 
std::shared_ptr< RoomcreateRoom (const std::string &id, const std::string &name="", size_t maxPlayers=4, bool isPrivate=false, float gameSpeedMultiplier=1.0f) override
 Create a new room.
 
std::shared_ptr< RoomgetRoom (const std::string &id) override
 Retrieve a room by ID.
 
bool removeRoom (const std::string &id) override
 Remove a room by ID.
 
std::vector< std::shared_ptr< Room > > getAllRooms () override
 Get all active rooms.
 
std::vector< std::shared_ptr< Room > > getPublicRooms () override
 Get all public rooms (not private)
 
size_t getRoomCount () const override
 Get number of active rooms.
 
bool update (float deltaTime) override
 Update all rooms (called by server loop)
 
void addPlayerToMatchmaking (uint32_t playerId)
 Add player to matchmaking queue.
 
void removePlayerFromMatchmaking (uint32_t playerId)
 Remove player from matchmaking queue.
 
std::shared_ptr< MatchmakingServicegetMatchmaking ()
 Get the matchmaking service.
 
void setRoomCreatedCallback (RoomCreatedCallback callback)
 Set callback for when a room is created by matchmaking.
 
std::shared_ptr< RoomgetRoomByPlayer (uint32_t playerId)
 Get room by player ID (find which room a player is in)
 
void cleanupFinishedRooms ()
 Clean up finished rooms Removes rooms that are in FINISHED state and have no players.
 
- Public Member Functions inherited from server::IRoomManager
virtual ~IRoomManager ()=default
 

Private Member Functions

void _onMatchCreated (std::shared_ptr< Room > room)
 Handle match created by matchmaking service.
 

Private Attributes

std::unordered_map< std::string, std::shared_ptr< Room > > _rooms
 
std::shared_ptr< MatchmakingService_matchmaking
 
std::shared_ptr< EventBus_eventBus
 
RoomCreatedCallback _roomCreatedCallback
 
std::recursive_mutex _mutex
 

Detailed Description

Manages all game rooms and matchmaking.

Features:

  • Create/destroy rooms
  • Automatic matchmaking integration
  • Room discovery (list public rooms)
  • Thread-safe operations

Definition at line 31 of file RoomManager.hpp.

Constructor & Destructor Documentation

◆ RoomManager() [1/2]

server::RoomManager::RoomManager ( )

Definition at line 13 of file RoomManager.cpp.

References _matchmaking, _onMatchCreated(), and LOG_INFO.

Here is the call graph for this function:

◆ RoomManager() [2/2]

server::RoomManager::RoomManager ( std::shared_ptr< MatchmakingService matchmaking,
std::shared_ptr< EventBus eventBus = nullptr 
)
explicit

Definition at line 19 of file RoomManager.cpp.

References _matchmaking, _onMatchCreated(), and LOG_INFO.

Here is the call graph for this function:

◆ ~RoomManager()

server::RoomManager::~RoomManager ( )
overridedefault

Member Function Documentation

◆ _onMatchCreated()

void server::RoomManager::_onMatchCreated ( std::shared_ptr< Room room)
private

Handle match created by matchmaking service.

Parameters
roomNewly created room with matched players

Definition at line 192 of file RoomManager.cpp.

References _mutex, _roomCreatedCallback, _rooms, LOG_INFO, LOG_WARNING, and server::STARTING.

Referenced by RoomManager(), and RoomManager().

◆ addPlayerToMatchmaking()

void server::RoomManager::addPlayerToMatchmaking ( uint32_t  playerId)

Add player to matchmaking queue.

Parameters
playerIdPlayer ID to add

Definition at line 29 of file RoomManager.cpp.

References _matchmaking, LOG_ERROR, and LOG_INFO.

◆ cleanupFinishedRooms()

void server::RoomManager::cleanupFinishedRooms ( )

Clean up finished rooms Removes rooms that are in FINISHED state and have no players.

Definition at line 171 of file RoomManager.cpp.

References _mutex, _rooms, server::FINISHED, and LOG_INFO.

◆ createRoom()

std::shared_ptr< Room > server::RoomManager::createRoom ( const std::string &  id,
const std::string &  name = "",
size_t  maxPlayers = 4,
bool  isPrivate = false,
float  gameSpeedMultiplier = 1.0f 
)
overridevirtual

Create a new room.

Parameters
idRoom identifier
nameDisplay name (optional)
maxPlayersMaximum players (default: 4)
isPrivateWhether room is private (default: false)
gameSpeedMultiplierGame speed multiplier (0.25 to 1.0, default: 1.0)
Returns
Shared pointer to created room

Implements server::IRoomManager.

Definition at line 49 of file RoomManager.cpp.

References _eventBus, _mutex, _rooms, LOG_ERROR, LOG_INFO, and LOG_WARNING.

◆ getAllRooms()

std::vector< std::shared_ptr< Room > > server::RoomManager::getAllRooms ( )
overridevirtual

Get all active rooms.

Returns
Vector of room pointers

Implements server::IRoomManager.

Definition at line 96 of file RoomManager.cpp.

References _mutex, and _rooms.

◆ getMatchmaking()

std::shared_ptr< MatchmakingService > server::RoomManager::getMatchmaking ( )
inline

Get the matchmaking service.

Returns
Shared pointer to MatchmakingService

Definition at line 64 of file RoomManager.hpp.

References _matchmaking.

◆ getPublicRooms()

std::vector< std::shared_ptr< Room > > server::RoomManager::getPublicRooms ( )
overridevirtual

Get all public rooms (not private)

Returns
Vector of public room pointers

Implements server::IRoomManager.

Definition at line 109 of file RoomManager.cpp.

References _mutex, _rooms, and server::FINISHED.

◆ getRoom()

std::shared_ptr< Room > server::RoomManager::getRoom ( const std::string &  id)
overridevirtual

Retrieve a room by ID.

Parameters
idRoom identifier
Returns
Shared pointer to the room (nullptr if not found)

Implements server::IRoomManager.

Definition at line 72 of file RoomManager.cpp.

References _mutex, and _rooms.

◆ getRoomByPlayer()

std::shared_ptr< Room > server::RoomManager::getRoomByPlayer ( uint32_t  playerId)

Get room by player ID (find which room a player is in)

Parameters
playerIdPlayer ID to search for
Returns
Shared pointer to room (nullptr if not found)

Definition at line 159 of file RoomManager.cpp.

References _mutex, and _rooms.

◆ getRoomCount()

size_t server::RoomManager::getRoomCount ( ) const
overridevirtual

Get number of active rooms.

Returns
Room count

Implements server::IRoomManager.

Definition at line 124 of file RoomManager.cpp.

References _mutex, and _rooms.

◆ removePlayerFromMatchmaking()

void server::RoomManager::removePlayerFromMatchmaking ( uint32_t  playerId)

Remove player from matchmaking queue.

Parameters
playerIdPlayer ID to remove

Definition at line 40 of file RoomManager.cpp.

References _matchmaking, and LOG_INFO.

◆ removeRoom()

bool server::RoomManager::removeRoom ( const std::string &  id)
overridevirtual

Remove a room by ID.

Parameters
idRoom identifier
Returns
true if room was removed

Implements server::IRoomManager.

Definition at line 83 of file RoomManager.cpp.

References _mutex, _rooms, and LOG_INFO.

◆ setRoomCreatedCallback()

void server::RoomManager::setRoomCreatedCallback ( RoomCreatedCallback  callback)
inline

Set callback for when a room is created by matchmaking.

Parameters
callbackFunction to call when a room is created with matched players

Definition at line 70 of file RoomManager.hpp.

References _roomCreatedCallback.

◆ update()

bool server::RoomManager::update ( float  deltaTime)
overridevirtual

Update all rooms (called by server loop)

Parameters
deltaTimeTime since last update
Returns
true if room list changed (e.g. room removed)

Implements server::IRoomManager.

Definition at line 129 of file RoomManager.cpp.

References _matchmaking, _mutex, _rooms, server::FINISHED, and LOG_INFO.

Member Data Documentation

◆ _eventBus

std::shared_ptr<EventBus> server::RoomManager::_eventBus
private

Definition at line 94 of file RoomManager.hpp.

Referenced by createRoom().

◆ _matchmaking

std::shared_ptr<MatchmakingService> server::RoomManager::_matchmaking
private

◆ _mutex

std::recursive_mutex server::RoomManager::_mutex
mutableprivate

◆ _roomCreatedCallback

RoomCreatedCallback server::RoomManager::_roomCreatedCallback
private

Definition at line 95 of file RoomManager.hpp.

Referenced by _onMatchCreated(), and setRoomCreatedCallback().

◆ _rooms

std::unordered_map<std::string, std::shared_ptr<Room> > server::RoomManager::_rooms
private

The documentation for this class was generated from the following files: