summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/Address.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/Address.cpp')
-rw-r--r--cpp/src/qpid/Address.cpp36
1 files changed, 30 insertions, 6 deletions
diff --git a/cpp/src/qpid/Address.cpp b/cpp/src/qpid/Address.cpp
index e278c0295c..ac8c7f30b1 100644
--- a/cpp/src/qpid/Address.cpp
+++ b/cpp/src/qpid/Address.cpp
@@ -18,17 +18,41 @@
#include "Address.h"
+#include <ostream>
+
+using namespace std;
+
namespace qpid {
-std::ostream& operator<<(std::ostream& os, const Address& addr) {
- const TcpAddress *t = addr.get<TcpAddress>();
- if (t)
- os << *t;
- return os;
+TcpAddress::TcpAddress(const std::string& h, uint16_t p): host(h), port(p) {}
+
+struct AddressOstreamVisitor : public boost::static_visitor<ostream&> {
+ ostream& out;
+ AddressOstreamVisitor(ostream& o) : out(o) {}
+ template <class T> ostream& operator()(const T& data) { return out << data; }
+};
+
+ostream& operator<<(ostream& os, const Address& addr) {
+ AddressOstreamVisitor visitor(os);
+ return boost::apply_visitor(visitor, addr.value);
+}
+
+bool operator==(const TcpAddress& x, const TcpAddress& y) {
+ return y.host==x.host && y.port == x.port;
}
-std::ostream& operator<<(std::ostream& os, const TcpAddress& a) {
+ostream& operator<<(ostream& os, const TcpAddress& a) {
return os << "tcp:" << a.host << ":" << a.port;
}
+ExampleAddress::ExampleAddress(const char c) : data(c) {}
+
+bool operator==(const ExampleAddress& x, const ExampleAddress& y) {
+ return x.data == y.data;
+}
+
+ostream& operator<<(ostream& os, const ExampleAddress& ex) {
+ return os << "example:" << ex.data;
+}
+
} // namespace qpid