Argentum Online - Servidor
clients_monitor.h
1 #ifndef CLIENTS_MONITOR_H
2 #define CLIENTS_MONITOR_H
3 
4 #include <mutex>
5 #include <unordered_map>
6 #include <unordered_set>
7 
8 #include "../../include/event.h"
9 #include "../../include/network/socket_exception.h"
10 #include "../../include/network/socket_manager.h"
11 #include "../../include/types.h"
12 
22  private:
23  std::recursive_mutex m;
24  std::unordered_map<ClientId, SocketManager*> clients;
25  std::unordered_set<ClientId> connected_clients;
26 
27  public:
29  ~ClientsMonitor();
30 
31  void add_client(ClientId client_id, SocketManager* client);
32 
33  SocketManager* rm_client(ClientId client_id);
34 
44  void drop(ClientId client_id);
45 
53  void drop_all();
54 
63  void send_to(ClientId client_id, Event ev);
64 };
65 
66 #endif // CLIENTS_MONITOR_H
SocketManager
Definition: socket_manager.h:12
ClientsMonitor::send_to
void send_to(ClientId client_id, Event ev)
Envía un evento de forma segura a un cliente.
Definition: clients_monitor.cpp:35
ClientsMonitor
Monitor de sockets de los clientes.
Definition: clients_monitor.h:21
ClientsMonitor::drop
void drop(ClientId client_id)
Setea la desconexión de un cliente.
Definition: clients_monitor.cpp:45
ClientsMonitor::drop_all
void drop_all()
Prepara a todos los clientes para la desconexión.
Definition: clients_monitor.cpp:54
Event
Definition: event.h:55