salsa  0.4.0
Distributor.hh
1 #pragma once
2 
3 #include <NodeInfo.pb.h>
4 #include <TaskInfo.pb.h>
5 #include <Socket.hh>
6 #include <map>
7 namespace Salsa {
16 class NodeManager;
17 
18 class Distributor : public Object {
19 public:
20  Distributor(std::string uuid, std::shared_ptr<Socket> pPipe, NodeManager * pNM);
21  virtual ~Distributor();
22 
24  std::string uuid() const;
25 
27  std::shared_ptr<Socket> pipe() const;
28 
30  void print() const;
31 
32  // TODO Client ops
33  void addClient(std::string uuid, std::string type);
34  void removeClient(std::string uuid);
35 
36  // TODO Other ops
37  void addOther(std::string uuid, std::string type);
38  void removeOther(std::string uuid);
39 
40  // TODO Get node info
41  NodeInfo * nodeInfo() const;
42 
44  virtual void onEnter(Message * pInMsg, std::vector<std::string> & out, std::string type);
45  virtual void onExit(Message * pInMsg, std::vector<std::string> & out);
46  virtual void onWhisper(Message * pInMsg, std::vector<std::string> & out);
47 
48 protected:
49  std::string mUUID{};
50  std::shared_ptr<Socket> mpPipe = nullptr;
51  std::map<std::string, std::string> mClients{};
52  std::map<std::string, std::string> mOthers{};
53  NodeManager * mpNodeManager = nullptr;
54  NodeInfo * mpNodeInfo{new NodeInfo()};
55 
56  mutable TaskInfo mTaskInfoCache{};
57 };
58 } // namespace Salsa
std::string mUUID
Self UUID.
Definition: Distributor.hh:49
NodeInfo * nodeInfo() const
Definition: Distributor.cc:92
Base Message class.
Definition: Message.hh:15
Base Distributor class.
Definition: Distributor.hh:18
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:50
NodeManager * mpNodeManager
Node Manager.
Definition: Distributor.hh:53
NodeManager class.
Definition: NodeManager.hh:22
std::map< std::string, std::string > mOthers
List of others.
Definition: Distributor.hh:52
std::map< std::string, std::string > mClients
List of clients.
Definition: Distributor.hh:51
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
std::shared_ptr< Socket > pipe() const
TODO Returns distributor's pipe?
Definition: Distributor.cc:77
NodeInfo * mpNodeInfo
Node Info.
Definition: Distributor.hh:54
void print() const
TODO Prints distributor's state.
Definition: Distributor.cc:50
std::string uuid() const
Returns distributor's UUID.
Definition: Distributor.cc:84
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
TaskInfo mTaskInfoCache
Task Info cache.
Definition: Distributor.hh:56
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