diff options
Diffstat (limited to 'cpp/src/qpid/Address.cpp')
-rw-r--r-- | cpp/src/qpid/Address.cpp | 36 |
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 |