salsa  0.4.0
Distributor.cc
1 #include "Distributor.hh"
2 namespace Salsa {
3 Distributor::Distributor(std::string uuid, std::shared_ptr<Socket> pipe, NodeManager * pNodeMan)
4  : Object(), mUUID(uuid), mpPipe(pipe), mpNodeManager(pNodeMan)
5 {
9 }
11 {
15  delete mpNodeInfo;
16 }
17 
18 void Distributor::addClient(std::string uuid, std::string type)
19 {
23  mClients.emplace(uuid, type);
24 }
25 
26 void Distributor::removeClient(std::string uuid)
27 {
31  mClients.erase(uuid);
32 }
33 
34 void Distributor::addOther(std::string uuid, std::string type)
35 {
39  mOthers.emplace(uuid, type);
40 }
41 
42 void Distributor::removeOther(std::string uuid)
43 {
47  mOthers.erase(uuid);
48 }
49 
50 void Distributor::print() const
51 {
55  SPD_DEBUG("clients [{}] others [{}] pipe [{}]", mClients.size(), mOthers.size(), static_cast<void *>(mpPipe.get()));
56 }
57 
58 void Distributor::onEnter(Message * /*inMsg*/, std::vector<std::string> & /*out*/, std::string /*type*/)
59 {
63 }
64 void Distributor::onExit(Message * /*inMsg*/, std::vector<std::string> & /*out*/)
65 {
69 }
70 void Distributor::onWhisper(Message * /*inMsg*/, std::vector<std::string> & /*out*/)
71 {
75 }
76 
77 std::shared_ptr<Socket> Distributor::pipe() const
78 {
82  return mpPipe;
83 }
84 std::string Distributor::uuid() const
85 {
89  return std::move(mUUID);
90 }
91 
92 NodeInfo * Distributor::nodeInfo() const
93 {
97  return mpNodeInfo;
98 }
99 
101 {
105 
106  if (mpNodeInfo == nullptr) return;
107 
108  mJsonValue.clear();
109  mJsonValue["uuid"] = mpNodeInfo->uuid();
110  if (!mpNodeInfo->name().empty()) mJsonValue["name"] = mpNodeInfo->name();
111  if (!mpNodeInfo->name().empty()) mJsonValue["hostname"] = mpNodeInfo->hostname();
112  if (!mpNodeInfo->submiturl().empty()) mJsonValue["submitUrl"] = mpNodeInfo->submiturl();
113  mJsonValue["slots"] = mpNodeInfo->slots();
114  if (mpNodeInfo->hosts_size() > 0) {
115  for (auto hh : mpNodeInfo->hosts()) {
116  Json::Value h;
117  h["uuid"] = hh.uuid();
118  h["hostname"] = hh.hostname();
119  h["slots"] = hh.slots();
120  mJsonValue["hosts"].append(h);
121  }
122  }
123 }
124 
125 } // namespace Salsa
std::string mUUID
Self UUID.
Definition: Distributor.hh:54
NodeInfo * nodeInfo() const
Definition: Distributor.cc:92
Base Message class
Definition: Message.hh:15
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
virtual void upadateJsonValueNodeInfo()
Definition: Distributor.cc:100
std::shared_ptr< Socket > mpPipe
Pipe for messages (net connector)
Definition: Distributor.hh:55
NodeManager class
Definition: NodeManager.hh:22
std::map< std::string, std::string > mOthers
List of others.
Definition: Distributor.hh:57
Json::Value mJsonValue
Node Info as json value.
Definition: Distributor.hh:60
std::map< std::string, std::string > mClients
List of clients.
Definition: Distributor.hh:56
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&#39;s pipe?
Definition: Distributor.cc:77
Definition: Actor.cc:2
NodeInfo * mpNodeInfo
Node Info.
Definition: Distributor.hh:59
void print() const
TODO Prints distributor&#39;s state.
Definition: Distributor.cc:50
std::string uuid() const
Returns distributor&#39;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
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