Line data Source code
1 :
2 : /* Copyright (c) 2015, Human Brain Project
3 : * Daniel.Nachbaur@epfl.ch
4 : */
5 :
6 : #include "uri.h"
7 : #include "detail/constants.h"
8 : #include "log.h"
9 :
10 : #include <cassert>
11 :
12 : namespace zeroeq
13 : {
14 : namespace
15 : {
16 172 : servus::URI createURI(std::string string)
17 : {
18 344 : servus::URI uri(string);
19 172 : if (uri.getScheme().empty())
20 : {
21 124 : if (string.empty() || string[0] == ':')
22 2 : string = std::string("*") + string;
23 124 : return servus::URI(DEFAULT_SCHEMA + "://" + string);
24 : }
25 :
26 48 : return uri;
27 : }
28 : }
29 :
30 100 : URI::URI()
31 100 : : servus::URI()
32 : {
33 100 : setScheme(DEFAULT_SCHEMA);
34 100 : }
35 :
36 429 : URI::~URI()
37 : {
38 429 : }
39 :
40 150 : URI::URI(const std::string& uri)
41 150 : : servus::URI(createURI(uri.c_str()))
42 : {
43 150 : }
44 :
45 22 : URI::URI(const char* uri)
46 22 : : servus::URI(createURI(uri))
47 : {
48 22 : }
49 :
50 151 : URI::URI(const URI& from)
51 151 : : servus::URI(from)
52 : {
53 151 : assert(!getScheme().empty());
54 151 : }
55 :
56 6 : URI::URI(const servus::URI& from)
57 6 : : servus::URI(from)
58 : {
59 6 : if (getScheme().empty())
60 4 : setScheme(DEFAULT_SCHEMA);
61 6 : }
62 :
63 39 : URI& URI::operator=(const URI& rhs)
64 : {
65 39 : if (this == &rhs)
66 1 : return *this;
67 38 : servus::URI::operator=(rhs);
68 38 : assert(!getScheme().empty());
69 38 : return *this;
70 : }
71 :
72 2 : URI& URI::operator=(const servus::URI& rhs)
73 : {
74 2 : servus::URI::operator=(rhs);
75 2 : if (getScheme().empty())
76 1 : setScheme(DEFAULT_SCHEMA);
77 2 : return *this;
78 : }
79 :
80 4 : bool URI::operator==(const URI& rhs) const
81 : {
82 4 : return servus::URI::operator==(rhs);
83 : }
84 :
85 1 : bool URI::operator==(const servus::URI& rhs) const
86 : {
87 1 : return servus::URI::operator==(rhs);
88 : }
89 :
90 2 : bool URI::operator!=(const URI& rhs) const
91 : {
92 2 : return servus::URI::operator!=(rhs);
93 : }
94 :
95 1 : bool URI::operator!=(const servus::URI& rhs) const
96 : {
97 1 : return servus::URI::operator!=(rhs);
98 : }
99 :
100 32 : bool URI::isFullyQualified() const
101 : {
102 90 : return getScheme() != DEFAULT_SCHEMA ||
103 88 : (!getHost().empty() && getPort() != 0);
104 : }
105 24 : }
|