salsa  0.3.0
 All Classes Functions Variables Enumerations Pages
Distributor.hh
1 #pragma once
2 
3 #include <NodeInfo.pb.h>
4 #include <Socket.hh>
5 #include <map>
6 namespace Salsa {
15 class NodeManager;
16 
17 class Distributor : public Object {
18 public:
19  Distributor(std::string uuid, std::shared_ptr<Socket> pPipe, NodeManager * pNM);
20  virtual ~Distributor();
21 
23  std::string uuid() const;
24 
26  std::shared_ptr<Socket> pipe() const;
27 
29  void print() const;
30 
31  // TODO Client ops
32  void addClient(std::string uuid, std::string type);
33  void removeClient(std::string uuid);
34 
35  // TODO Other ops
36  void addOther(std::string uuid, std::string type);
37  void removeOther(std::string uuid);
38 
39  // TODO Get node info
40  NodeInfo * nodeInfo() const;
41 
43  virtual void onEnter(Message * pInMsg, std::vector<std::string> & out, std::string type);
44  virtual void onExit(Message * pInMsg, std::vector<std::string> & out);
45  virtual void onWhisper(Message * pInMsg, std::vector<std::string> & out);
46 
47 protected:
48  std::string mUUID{};
49  std::shared_ptr<Socket> mpPipe = nullptr;
50  std::map<std::string, std::string> mClients{};
51  std::map<std::string, std::string> mOthers{};
52  NodeManager * mpNodeManager = nullptr;
53  NodeInfo * mpNodeInfo{new NodeInfo()};
54 };
55 } // namespace Salsa
std::string mUUID
Self UUID.
Definition: Distributor.hh:48
Base Message class.
Definition: Message.hh:15
Base Distributor class.
Definition: Distributor.hh:17
virtual void onEnter(Message *pInMsg, std::vector< std::string > &out, std::string type)
TODO Three horsemen of apocalypse.
Definition: Distributor.cc:58
void addOther(std::string uuid, std::string type)
Definition: Distributor.cc:34
std::shared_ptr< Socket > mpPipe
Pipe for messages (net connector)
Definition: Distributor.hh:49
NodeManager * mpNodeManager
Node Manager.
Definition: Distributor.hh:52
NodeManager class.
Definition: NodeManager.hh:20
std::shared_ptr< Socket > pipe() const
TODO Returns distributor&#39;s pipe?
Definition: Distributor.cc:77
NodeInfo * nodeInfo() const
Definition: Distributor.cc:92
std::map< std::string, std::string > mOthers
List of others.
Definition: Distributor.hh:51
std::string uuid() const
Returns distributor&#39;s UUID.
Definition: Distributor.cc:84
std::map< std::string, std::string > mClients
List of clients.
Definition: Distributor.hh:50
virtual void onWhisper(Message *pInMsg, std::vector< std::string > &out)
Definition: Distributor.cc:70
virtual void onExit(Message *pInMsg, std::vector< std::string > &out)
Definition: Distributor.cc:64
NodeInfo * mpNodeInfo
Node Info.
Definition: Distributor.hh:53
virtual ~Distributor()
Definition: Distributor.cc:10
Distributor(std::string uuid, std::shared_ptr< Socket > pPipe, NodeManager *pNM)
Definition: Distributor.cc:3
Base Salsa Object class.
Definition: Object.hh:15
void print() const
TODO Prints distributor&#39;s state.
Definition: Distributor.cc:50
void addClient(std::string uuid, std::string type)
Definition: Distributor.cc:18
void removeClient(std::string uuid)
Definition: Distributor.cc:26
void removeOther(std::string uuid)
Definition: Distributor.cc:42