Logo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
client_handler.hh
Go to the documentation of this file.
1 #pragma once
2 #include "../messages/message.hh"
3 #include "netobserver.hh"
4 #include "server.hh"
5 
6 #include <vector>
7 #include <boost/thread/shared_mutex.hpp>
8 
9 namespace eclipse {
10 namespace network {
11 
13  public:
14  ClientHandler(uint32_t port);
15  ~ClientHandler() = default;
16 
17  void attach(NetObserver*);
18  bool send(uint32_t i, messages::Message* m);
19  bool send_and_replicate(std::vector<int>, messages::Message*);
20 
21  private:
22  bool try_reuse_client(uint32_t i, std::shared_ptr<std::string>);
23  bool send(uint32_t i, std::shared_ptr<std::string> str);
24  void connect(uint32_t i, std::shared_ptr<Server> server);
25 
28  std::map<uint32_t, std::weak_ptr<Server>> current_servers;
29 
31  boost::shared_mutex rw_lock;
32 
33  std::vector<std::string> nodes;
34  NetObserver* local_router = nullptr;
35  uint32_t port;
36  uint32_t id;
37 };
38 
39 }
40 } /* eclipse */
Definition: netobserver.hh:9
ClientHandler(uint32_t port)
Definition: client_handler.cc:19
void attach(NetObserver *)
Definition: client_handler.cc:25
Definition: message.hh:15
bool send(uint32_t i, messages::Message *m)
Definition: client_handler.cc:100
Definition: client_handler.hh:12
bool send_and_replicate(std::vector< int >, messages::Message *)
Definition: client_handler.cc:128