Argentum Online - Servidor
Referencia de la Clase ServerManager

Orquestador de las componentes del servidor. (Singleton) Más...

#include <server_manager.h>

Métodos públicos

void start ()
 Empezar a ejecutar la instancia del servidor. Más...
 
ThDispatcherget_dispatcher ()
 
CharacterManagerget_character_manager ()
 
void dispatch (const Event &ev)
 Agregar un evento que debe ser manejado por el servidor. Más...
 
void add_client (ClientId client_id, SocketManager *new_client)
 Agregar a un cliente al servidor. Más...
 
void rm_client (ClientId client_id)
 Eliminar a un cliente del servidor. Más...
 
void drop_client (ClientId client_id)
 Función ejecutar la desconexión de un cliente. Más...
 
void add_player (ClientId client_id, nlohmann::json player_info)
 Agregar un jugador a un mapa y la sesión asociada. Más...
 
nlohmann::json rm_player (ClientId client_id)
 Remueve un jugador del mapa (y la sesión asociada) al que esté conectado. Más...
 
nlohmann::json change_player_map (ClientId client_id, position_t new_position, MapId new_map)
 Cambia a un jugador de un mapa (y sesión) a otro. Más...
 
void send_to (ClientId client_id, const Event &ev)
 Envia un Evento a un cliente. Más...
 
std::string get_name_by_client (ClientId client_id)
 
ClientId get_client_by_name (const std::string &name)
 
Sessionget_session (ClientId client_id)
 Obtener la sesión a la que está conectado un cliente. Más...
 
void finish ()
 Cerrar y finalizar el servidor de forma ordenada. Más...
 

Métodos públicos estáticos

static ServerManagerget_instance ()
 

Descripción detallada

Orquestador de las componentes del servidor. (Singleton)

Esta clase se encarga de contener las instancias de las distintas componentes y contenedores necesarios para el servidor del juego. Esto incluye el manejo de threads que se utilizan para el mismo. Se encarga principalmente de la sincronización para agregar y sacar jugadores de los diferentes mapas (y sesiones), esto incluye cuando un jugador cambia de mapa o se teletransporta.

Documentación de las funciones miembro

◆ add_client()

void ServerManager::add_client ( ClientId  client_id,
SocketManager new_client 
)

Agregar a un cliente al servidor.

Parámetros
client_idId del nuevo cliente.
new_clientSocket (alocado en heap) del nuevo cliente.

◆ add_player()

void ServerManager::add_player ( ClientId  client_id,
nlohmann::json  player_info 
)

Agregar un jugador a un mapa y la sesión asociada.

Para un cliente existente, agrega al jugador con la información correspondiente.

Parámetros
client_idId del cliente que está entrando con un personaje.
player_infoInformación del personaje a ser agregado.

◆ change_player_map()

nlohmann::json ServerManager::change_player_map ( ClientId  client_id,
position_t  new_position,
MapId  new_map 
)

Cambia a un jugador de un mapa (y sesión) a otro.

Parámetros
client_idId de cliente que se está cambiando de mapa.
new_positionPosición en el nuevo mapa.
new_mapId del mapa a donde se mueve el jugador.
Devuelve
nlohmann::json Devuelve la información del jugador al ser cambiado de mapa.

◆ dispatch()

void ServerManager::dispatch ( const Event ev)

Agregar un evento que debe ser manejado por el servidor.

Simplemente envía al "Dispatcher" el evento pasado por parámetro.

Parámetros
evEvento.

◆ drop_client()

void ServerManager::drop_client ( ClientId  client_id)

Función ejecutar la desconexión de un cliente.

Esta función puede ser llamada porque un cliente desea desconectarse o es pateado forzosamente del servidor.

Parámetros
client_idId del cliente a ser desconectado.

◆ finish()

void ServerManager::finish ( )

Cerrar y finalizar el servidor de forma ordenada.

Esta función patea a todos los clientes (los desconecta y persiste sus personajes), cierra todas las componentes y une todos los threads.

◆ get_session()

Session & ServerManager::get_session ( ClientId  client_id)

Obtener la sesión a la que está conectado un cliente.

Parámetros
client_idId del cliente.
Devuelve
Session Sesión a la que está conectado un cliente.

◆ rm_client()

void ServerManager::rm_client ( ClientId  client_id)

Eliminar a un cliente del servidor.

Parámetros
client_idId del cliente a ser eliminado.

◆ rm_player()

nlohmann::json ServerManager::rm_player ( ClientId  client_id)

Remueve un jugador del mapa (y la sesión asociada) al que esté conectado.

Parámetros
client_idId de cliente al que se va a remover.
Devuelve
nlohmann::json Devuelve la información del personaje que se removió.

◆ send_to()

void ServerManager::send_to ( ClientId  client_id,
const Event ev 
)

Envia un Evento a un cliente.

Parámetros
client_idId del cliente.
evEvento a ser enviado al cliente.

◆ start()

void ServerManager::start ( )

Empezar a ejecutar la instancia del servidor.


La documentación para esta clase fue generada a partir de los siguientes ficheros: