phaser-server  0.0.2
session.h
Go to the documentation of this file.
1 #ifndef SESSION_H
2 #define SESSION_H
3 
9 #include <thread.h>
10 #include <Socket.h>
11 #include <JSON.h>
12 #include "sessionList.h"
13 #include <mutex>
14 class PhaseInterface;
15 
22 class Session : public thrlib::Thread
23 { public:
24  static void Manage(void);
25  static void NotifyAllClients(const std::string &);
26  Session(cpplib::Connection, PhaseInterface &);
27  void NotifyClient(const std::string &);
29  bool IsQuiet(void) const { return m_quiet; }
30  std::string ClientInfo(void) const;
31 
32  private:
33  static void MaintainList(std::list<Session *> &, bool &);
34  void ThreadMain(void) override;
35  void ClientRequest(const std::string &);
36 
37  private:
38  std::mutex m_clientLock;
39  cpplib::Connection m_con;
40  static SessionList m_slist;
41  PhaseInterface &m_phaser;
42  bool m_quiet;
43 };
44 
45 #endif
Abstract interface to RF cavity phasing.
Definition: phaseInterface.h:16
Serialized use of a collection of sessions.
Definition: sessionList.h:18
Manage one connection session with a client.
Definition: session.h:23
Session(cpplib::Connection, PhaseInterface &)
Construct a Session object.
Definition: session.cpp:25
std::string ClientInfo(void) const
Get information about the client associated with this session.
Definition: session.cpp:39
static void NotifyAllClients(const std::string &)
Send a message to all client sessions.
Definition: manage.cpp:143
static void Manage(void)
Manage client sessions.
Definition: manage.cpp:20
bool IsQuiet(void) const
Does this session not accept notifications?
Definition: session.h:29
void NotifyClient(const std::string &)
Send a message to the client.
Definition: session.cpp:52
Define and implement the 'SessionList' class.