Line data Source code
1 :
2 : /* Copyright (c) 2015-2017, Human Brain Project
3 : * Stefan.Eilemann@epfl.ch
4 : */
5 :
6 : #pragma once
7 :
8 : #include <zeroeq/detail/context.h>
9 : #include <zeroeq/types.h>
10 : #include <zeroeq/uri.h> // member
11 :
12 : #include <servus/servus.h> // member
13 :
14 : namespace zeroeq
15 : {
16 : namespace detail
17 : {
18 : class Sender
19 : {
20 : zmq::ContextPtr _context; // must be private before socket
21 :
22 : public:
23 : ZEROEQ_API Sender(const URI& uri_, const int type);
24 : ZEROEQ_API Sender(const URI& uri_, const int type,
25 : const std::string service, const std::string& session);
26 : ZEROEQ_API ~Sender();
27 :
28 : std::string getAddress() const;
29 :
30 : void initURI();
31 : ZEROEQ_API void announce();
32 : void addSockets(std::vector<zeroeq::detail::Socket>& entries);
33 :
34 7 : const std::string& getSession() const { return _session; }
35 : static uint128_t& getUUID();
36 :
37 : URI uri;
38 : zmq::SocketPtr socket;
39 :
40 : private:
41 : void _getEndPoint(std::string& host, std::string& port) const;
42 : void* _createContext(void* context);
43 :
44 : servus::Servus _service;
45 : const std::string _session;
46 : };
47 : }
48 : }
|