ZeroEQ  0.9.0
ZeroEQ - Zero Event Queue
uri.h
1 
2 /* Copyright (c) 2015, Human Brain Project
3  * Daniel.Nachbaur@epfl.ch
4  */
5 
6 #ifndef ZEROEQ_URI_H
7 #define ZEROEQ_URI_H
8 
9 #include <zeroeq/api.h>
10 
11 #include <servus/uri.h> // base class
12 
13 namespace zeroeq
14 {
19 class URI : private servus::URI
20 {
21 public:
23  ZEROEQ_API URI();
24 
25  ZEROEQ_API ~URI();
26 
27  ZEROEQ_API URI(const URI& from);
28 
30  ZEROEQ_API explicit URI(const std::string& uri);
31 
33  ZEROEQ_API explicit URI(const char* uri);
34 
36  ZEROEQ_API explicit URI(const servus::URI& from);
37 
38  ZEROEQ_API URI& operator=(const URI& rhs);
39 
40  /* Convert from servus::URI, set schema to "tcp" if empty */
41  ZEROEQ_API URI& operator=(const servus::URI& rhs);
42 
43  ZEROEQ_API bool operator==(const URI& rhs) const;
44 
45  ZEROEQ_API bool operator==(const servus::URI& rhs) const;
46 
47  ZEROEQ_API bool operator!=(const URI& rhs) const;
48 
49  ZEROEQ_API bool operator!=(const servus::URI& rhs) const;
50 
52  const servus::URI& toServusURI() const { return *this; }
53 
55  ZEROEQ_API bool isFullyQualified() const;
56 
59  using servus::URI::getScheme;
60  using servus::URI::getHost;
61  using servus::URI::getPort;
62  using servus::URI::getPath;
63  using servus::URI::getQuery;
64  using servus::URI::setHost;
65  using servus::URI::setPort;
67 };
68 
69 inline std::ostream& operator<<(std::ostream& os, const URI& uri)
70 {
71  return os << uri.toServusURI();
72 }
73 
74 } // namespace zeroeq
75 
76 namespace std
77 {
78 inline std::string to_string(const zeroeq::URI& uri)
79 {
80  return to_string(uri.toServusURI());
81 }
82 }
83 
84 #endif
Enhances servus::URI to guarantee the existance of a schema and to allow construction of [host][:port...
Definition: uri.h:19
Defines export visibility macros for library ZeroEQ.
STL namespace.
const servus::URI & toServusURI() const
Convert this URI to a servus::URI.
Definition: uri.h:52
bool isFullyQualified() const
URI()
Create a default URI in the form "tcp://".
Publish-subscribe and request-reply.
Definition: client.h:10