Repository: qpid-proton Updated Branches: refs/heads/master 564a4d024 -> 24dd60385
PROTON-1138: connection host becomes virtual_host Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/24dd6038 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/24dd6038 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/24dd6038 Branch: refs/heads/master Commit: 24dd60385b52b471120a227bcb8ed8225e199a8a Parents: 564a4d0 Author: Clifford Jansen <[email protected]> Authored: Tue May 3 16:22:08 2016 -0700 Committer: Clifford Jansen <[email protected]> Committed: Tue May 3 16:23:30 2016 -0700 ---------------------------------------------------------------------- proton-c/bindings/cpp/include/proton/connection.hpp | 3 +-- proton-c/bindings/cpp/include/proton/connection_options.hpp | 3 +++ proton-c/bindings/cpp/src/connection.cpp | 6 +----- proton-c/bindings/cpp/src/connection_options.cpp | 5 +++++ proton-c/bindings/cpp/src/connector.cpp | 1 - proton-c/bindings/cpp/src/container_impl.cpp | 3 ++- proton-c/bindings/cpp/src/proton_bits.hpp | 4 ++++ proton-c/bindings/cpp/src/reactor.hpp | 1 + 8 files changed, 17 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/include/proton/connection.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/connection.hpp b/proton-c/bindings/cpp/include/proton/connection.hpp index a1bbaea..11a48e9 100644 --- a/proton-c/bindings/cpp/include/proton/connection.hpp +++ b/proton-c/bindings/cpp/include/proton/connection.hpp @@ -69,7 +69,7 @@ PN_CPP_CLASS_EXTERN connection : public internal::object<pn_connection_t>, publi PN_CPP_EXTERN class transport transport() const; /// Return the AMQP host name for the connection. - PN_CPP_EXTERN std::string host() const; + PN_CPP_EXTERN std::string virtual_host() const; /// Return the container ID for the connection. PN_CPP_EXTERN std::string container_id() const; @@ -114,7 +114,6 @@ PN_CPP_CLASS_EXTERN connection : public internal::object<pn_connection_t>, publi private: void user(const std::string &); void password(const std::string &); - void host(const std::string& h); friend class internal::factory<connection>; friend class connector; http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/include/proton/connection_options.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/include/proton/connection_options.hpp b/proton-c/bindings/cpp/include/proton/connection_options.hpp index 6c7491f..d2f58a7 100644 --- a/proton-c/bindings/cpp/include/proton/connection_options.hpp +++ b/proton-c/bindings/cpp/include/proton/connection_options.hpp @@ -101,6 +101,9 @@ class connection_options { /// Set the container ID. PN_CPP_EXTERN connection_options& container_id(const std::string &id); + /// Set the virtual host name. + PN_CPP_EXTERN connection_options& virtual_host(const std::string &name); + /// @cond INTERNAL /// XXX more discussion - not clear we want to support this http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/src/connection.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/connection.cpp b/proton-c/bindings/cpp/src/connection.cpp index 093c19a..33451c3 100644 --- a/proton-c/bindings/cpp/src/connection.cpp +++ b/proton-c/bindings/cpp/src/connection.cpp @@ -61,14 +61,10 @@ void connection::close() { pn_connection_close(pn_object()); } void connection::release() { pn_connection_release(pn_object()); } -std::string connection::host() const { +std::string connection::virtual_host() const { return str(pn_connection_get_hostname(pn_object())); } -void connection::host(const std::string& h) { - pn_connection_set_hostname(pn_object(), h.c_str()); -} - std::string connection::container_id() const { return str(pn_connection_get_container(pn_object())); } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/src/connection_options.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/connection_options.cpp b/proton-c/bindings/cpp/src/connection_options.cpp index d5eff82..fe4582a 100644 --- a/proton-c/bindings/cpp/src/connection_options.cpp +++ b/proton-c/bindings/cpp/src/connection_options.cpp @@ -53,6 +53,7 @@ class connection_options::impl { option<duration> idle_timeout; option<duration> heartbeat; option<std::string> container_id; + option<std::string> virtual_host; option<std::string> link_prefix; option<reconnect_timer> reconnect; option<class ssl_client_options> ssl_client_options; @@ -119,6 +120,8 @@ class connection_options::impl { outbound->reconnect_timer(reconnect.value); if (container_id.set) pn_connection_set_container(pnc, container_id.value.c_str()); + if (virtual_host.set) + pn_connection_set_hostname(pnc, virtual_host.value.c_str()); if (link_prefix.set) connection_context::get(pnc).link_gen.prefix(link_prefix.value); } @@ -131,6 +134,7 @@ class connection_options::impl { idle_timeout.update(x.idle_timeout); heartbeat.update(x.heartbeat); container_id.update(x.container_id); + virtual_host.update(x.virtual_host); link_prefix.update(x.link_prefix); reconnect.update(x.reconnect); ssl_client_options.update(x.ssl_client_options); @@ -174,6 +178,7 @@ connection_options& connection_options::max_channels(uint16_t n) { impl_->max_fr connection_options& connection_options::idle_timeout(duration t) { impl_->idle_timeout = t; return *this; } connection_options& connection_options::heartbeat(duration t) { impl_->heartbeat = t; return *this; } connection_options& connection_options::container_id(const std::string &id) { impl_->container_id = id; return *this; } +connection_options& connection_options::virtual_host(const std::string &id) { impl_->virtual_host = id; return *this; } connection_options& connection_options::link_prefix(const std::string &id) { impl_->link_prefix = id; return *this; } connection_options& connection_options::reconnect(const reconnect_timer &rc) { impl_->reconnect = rc; return *this; } connection_options& connection_options::ssl_client_options(const class ssl_client_options &c) { impl_->ssl_client_options = c; return *this; } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/src/connector.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/connector.cpp b/proton-c/bindings/cpp/src/connector.cpp index c007dd6..ccd5751 100644 --- a/proton-c/bindings/cpp/src/connector.cpp +++ b/proton-c/bindings/cpp/src/connector.cpp @@ -57,7 +57,6 @@ void connector::reconnect_timer(const class reconnect_timer &rt) { } void connector::connect() { - connection_.host(address_.host_port()); pn_transport_t *pnt = pn_transport(); transport t(make_wrapper(pnt)); if (!address_.user().empty()) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/src/container_impl.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/container_impl.cpp b/proton-c/bindings/cpp/src/container_impl.cpp index 00ac5fd..a221f45 100644 --- a/proton-c/bindings/cpp/src/container_impl.cpp +++ b/proton-c/bindings/cpp/src/container_impl.cpp @@ -149,7 +149,8 @@ connection container_impl::connect(const proton::url &url, const connection_opti proton_handler *h = opts.handler(); internal::pn_ptr<pn_handler_t> chandler = h ? cpp_handler(h) : internal::pn_ptr<pn_handler_t>(); - connection conn(reactor_.connection(chandler.get())); + pn_connection_t* pnc = pn_reactor_connection_to_host(unwrap(reactor_), url.host().c_str(), url.port().c_str(), chandler.get()); + connection conn(make_wrapper(pnc)); internal::pn_unique_ptr<connector> ctor(new connector(conn, url, opts)); connection_context& cc(connection_context::get(conn)); cc.handler.reset(ctor.release()); http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/src/proton_bits.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/proton_bits.hpp b/proton-c/bindings/cpp/src/proton_bits.hpp index 6cf6322..2a5362c 100644 --- a/proton-c/bindings/cpp/src/proton_bits.hpp +++ b/proton-c/bindings/cpp/src/proton_bits.hpp @@ -39,6 +39,7 @@ struct pn_delivery_t; struct pn_condition_t; struct pn_acceptor_t; struct pn_terminus_t; +struct pn_reactor_t; namespace proton { @@ -58,6 +59,7 @@ class acceptor; class terminus; class source; class target; +class reactor; std::string error_str(long code); @@ -95,6 +97,7 @@ template <> struct wrapped<acceptor> { typedef pn_acceptor_t type; }; template <> struct wrapped<terminus> { typedef pn_terminus_t type; }; template <> struct wrapped<source> { typedef pn_terminus_t type; }; template <> struct wrapped<target> { typedef pn_terminus_t type; }; +template <> struct wrapped<reactor> { typedef pn_reactor_t type; }; template <class T> struct wrapper {}; template <> struct wrapper<pn_transport_t> { typedef transport type; }; @@ -107,6 +110,7 @@ template <> struct wrapper<pn_delivery_t> { typedef transfer type; }; template <> struct wrapper<pn_condition_t> { typedef error_condition type; }; template <> struct wrapper<pn_acceptor_t> { typedef acceptor type; }; template <> struct wrapper<pn_terminus_t> { typedef terminus type; }; +template <> struct wrapper<pn_reactor_t> { typedef reactor type; }; // Factory for wrapper types template <class T> http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/24dd6038/proton-c/bindings/cpp/src/reactor.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/reactor.hpp b/proton-c/bindings/cpp/src/reactor.hpp index 3aac8f8..48d9ea1 100644 --- a/proton-c/bindings/cpp/src/reactor.hpp +++ b/proton-c/bindings/cpp/src/reactor.hpp @@ -94,6 +94,7 @@ class reactor : public internal::object<pn_reactor_t> { friend class container_impl; friend class container_context; + friend class internal::factory<reactor>; }; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
