Repository: qpid-proton Updated Branches: refs/heads/master aa226be31 -> 645fe09e4
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/message.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/message.cpp b/proton-c/bindings/cpp/src/message.cpp index 285771b..7c032f0 100644 --- a/proton-c/bindings/cpp/src/message.cpp +++ b/proton-c/bindings/cpp/src/message.cpp @@ -66,9 +66,28 @@ void check(int err) { } } // namespace -void message::id(const message_id& id) { *data::cast(pn_message_id(message_)) = id.value_; } +void message::id(const message_id& id) { data(pn_message_id(message_)) = id.value_; } -message_id message::id() const { return message_id(*data::cast(pn_message_id(message_))); } +namespace { +inline message_id from_pn_atom(const pn_atom_t& v) { + switch (v.type) { + case PN_ULONG: + return message_id(amqp_ulong(v.u.as_ulong)); + case PN_UUID: + return message_id(amqp_uuid(v.u.as_uuid)); + case PN_BINARY: + return message_id(amqp_binary(v.u.as_bytes)); + case PN_STRING: + return message_id(amqp_string(v.u.as_bytes)); + default: + return message_id(); + } +} +} + +message_id message::id() const { + return from_pn_atom(pn_message_get_id(message_)); +} void message::user_id(const std::string &id) { check(pn_message_set_user_id(message_, pn_bytes(id))); @@ -106,11 +125,11 @@ std::string message::reply_to() const { } void message::correlation_id(const message_id& id) { - *data::cast(pn_message_correlation_id(message_)) = id.value_; + data(pn_message_correlation_id(message_)) = id.value_; } message_id message::correlation_id() const { - return message_id(*data::cast(pn_message_correlation_id(message_))); + return from_pn_atom(pn_message_get_correlation_id(message_)); } void message::content_type(const std::string &s) { @@ -169,24 +188,24 @@ void message::inferred(bool b) { pn_message_set_inferred(message_, b); } void message::body(const value& v) { body() = v; } -const data& message::body() const { - return *data::cast(pn_message_body(message_)); +const data message::body() const { + return pn_message_body(message_); } -data& message::body() { - return *data::cast(pn_message_body(message_)); +data message::body() { + return pn_message_body(message_); } void message::properties(const value& v) { properties() = v; } -const data& message::properties() const { - return *data::cast(pn_message_properties(message_)); +const data message::properties() const { + return pn_message_properties(message_); } -data& message::properties() { - return *data::cast(pn_message_properties(message_)); +data message::properties() { + return pn_message_properties(message_); } namespace { @@ -256,14 +275,14 @@ void message::decode(const std::string &s) { check(pn_message_decode(message_, s.data(), s.size())); } -void message::decode(proton::link &link, proton::delivery &delivery) { +void message::decode(proton::link link, proton::delivery delivery) { std::string buf; - buf.resize(pn_delivery_pending(pn_cast(&delivery))); - ssize_t n = pn_link_recv(pn_cast(&link), (char *) buf.data(), buf.size()); + buf.resize(delivery.pending()); + ssize_t n = link.recv((char *) buf.data(), buf.size()); if (n != (ssize_t) buf.size()) throw error(MSG("link read failure")); clear(); decode(buf); - pn_link_advance(pn_cast(&link)); + link.advance(); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/messaging_adapter.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/messaging_adapter.cpp b/proton-c/bindings/cpp/src/messaging_adapter.cpp index f155a8d..e3bced8 100644 --- a/proton-c/bindings/cpp/src/messaging_adapter.cpp +++ b/proton-c/bindings/cpp/src/messaging_adapter.cpp @@ -68,7 +68,7 @@ void messaging_adapter::on_delivery(event &e) { if (pe) { pn_event_t *cevent = pe->pn_event(); pn_link_t *lnk = pn_event_link(cevent); - delivery &dlv = pe->delivery(); + delivery dlv = pe->delivery(); if (pn_link_is_receiver(lnk)) { if (!dlv.partial() && dlv.readable()) { @@ -81,7 +81,7 @@ void messaging_adapter::on_delivery(event &e) { // See PROTON-998 class message &msg(ctx.event_message); mevent.message_ = &msg; - mevent.message_->decode(*link::cast(lnk), dlv); + mevent.message_->decode(lnk, dlv); if (pn_link_state(lnk) & PN_LOCAL_CLOSED) { if (auto_accept_) dlv.release(); http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/messaging_event.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/messaging_event.cpp b/proton-c/bindings/cpp/src/messaging_event.cpp index 3a0514d..b1fedc3 100644 --- a/proton-c/bindings/cpp/src/messaging_event.cpp +++ b/proton-c/bindings/cpp/src/messaging_event.cpp @@ -55,7 +55,7 @@ messaging_event::~messaging_event() {} messaging_event::event_type messaging_event::type() const { return type_; } -connection &messaging_event::connection() const { +connection messaging_event::connection() const { if (type_ == messaging_event::PROTON) return proton_event::connection(); if (parent_event_) @@ -63,7 +63,7 @@ connection &messaging_event::connection() const { throw error(MSG("No connection context for event")); } -sender& messaging_event::sender() const { +sender messaging_event::sender() const { if (type_ == messaging_event::PROTON) return proton_event::sender(); if (parent_event_) @@ -71,7 +71,7 @@ sender& messaging_event::sender() const { throw error(MSG("No sender context for event")); } -receiver& messaging_event::receiver() const { +receiver messaging_event::receiver() const { if (type_ == messaging_event::PROTON) return proton_event::receiver(); if (parent_event_) @@ -79,7 +79,7 @@ receiver& messaging_event::receiver() const { throw error(MSG("No receiver context for event")); } -link& messaging_event::link() const { +link messaging_event::link() const { if (type_ == messaging_event::PROTON) return proton_event::link(); if (parent_event_) @@ -87,7 +87,7 @@ link& messaging_event::link() const { throw error(MSG("No link context for event")); } -delivery& messaging_event::delivery() const { +delivery messaging_event::delivery() const { if (type_ == messaging_event::PROTON) return proton_event::delivery(); if (parent_event_) http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/messaging_event.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/messaging_event.hpp b/proton-c/bindings/cpp/src/messaging_event.hpp index f97d1a5..7d85d2b 100644 --- a/proton-c/bindings/cpp/src/messaging_event.hpp +++ b/proton-c/bindings/cpp/src/messaging_event.hpp @@ -88,11 +88,11 @@ class messaging_event : public proton_event ~messaging_event(); virtual PN_CPP_EXTERN void dispatch(handler &h); - virtual PN_CPP_EXTERN class connection &connection() const; - virtual PN_CPP_EXTERN class sender& sender() const; - virtual PN_CPP_EXTERN class receiver& receiver() const; - virtual PN_CPP_EXTERN class link& link() const; - virtual PN_CPP_EXTERN class delivery& delivery() const; + virtual PN_CPP_EXTERN class connection connection() const; + virtual PN_CPP_EXTERN class sender sender() const; + virtual PN_CPP_EXTERN class receiver receiver() const; + virtual PN_CPP_EXTERN class link link() const; + virtual PN_CPP_EXTERN class delivery delivery() const; virtual PN_CPP_EXTERN class message& message() const; PN_CPP_EXTERN event_type type() const; http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/object.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/object.cpp b/proton-c/bindings/cpp/src/object.cpp new file mode 100644 index 0000000..d5fb7ef --- /dev/null +++ b/proton-c/bindings/cpp/src/object.cpp @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#include "proton/object.hpp" +#include <proton/object.h> + +namespace proton { + +void object_base::incref() const { + if (object_) ::pn_incref(const_cast<void*>(object_)); +} + +void object_base::decref() const { + if (object_) ::pn_decref(const_cast<void*>(object_)); +} + +} http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/proton_event.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/proton_event.cpp b/proton-c/bindings/cpp/src/proton_event.cpp index 068d245..c324985 100644 --- a/proton-c/bindings/cpp/src/proton_event.cpp +++ b/proton-c/bindings/cpp/src/proton_event.cpp @@ -49,53 +49,53 @@ std::string proton_event::name() const { return pn_event_type_name(pn_event_type pn_event_t *proton_event::pn_event() const { return pn_event_; } -event_loop &proton_event::event_loop() const { +event_loop& proton_event::event_loop() const { if (!event_loop_) throw error(MSG("No event_loop context for this event")); return *event_loop_; } -container &proton_event::container() const { +container& proton_event::container() const { class container *c = dynamic_cast<class container*>(event_loop_); if (!c) throw error(MSG("No container context for this event")); return *c; } -engine &proton_event::engine() const { +engine& proton_event::engine() const { class engine *e = dynamic_cast<class engine*>(event_loop_); if (!e) throw error(MSG("No engine context for this event")); return *e; } -connection &proton_event::connection() const { +connection proton_event::connection() const { pn_connection_t *conn = pn_event_connection(pn_event()); if (!conn) throw error(MSG("No connection context for this event")); - return *connection::cast(conn); + return conn; } -link& proton_event::link() const { - class link *lnk = link::cast(pn_event_link(pn_event())); +link proton_event::link() const { + class link lnk = pn_event_link(pn_event()); if (!lnk) throw error(MSG("No link context for this event")); - return *lnk; + return lnk; } -sender& proton_event::sender() const { +sender proton_event::sender() const { if (!link().sender()) throw error(MSG("No sender context for this event")); - return *link().sender(); + return link().sender(); } -receiver& proton_event::receiver() const { +receiver proton_event::receiver() const { if (!link().receiver()) throw error(MSG("No receiver context for this event")); - return *link().receiver(); + return link().receiver(); } -delivery& proton_event::delivery() const { - class delivery *dlv = delivery::cast(pn_event_delivery(pn_event())); +delivery proton_event::delivery() const { + pn_delivery_t* dlv = pn_event_delivery(pn_event()); if (!dlv) throw error(MSG("No delivery context for this event")); - return *dlv; + return dlv; } void proton_event::dispatch(handler &h) { http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/proton_event.hpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/proton_event.hpp b/proton-c/bindings/cpp/src/proton_event.hpp index e382d8c..04a3e54 100644 --- a/proton-c/bindings/cpp/src/proton_event.hpp +++ b/proton-c/bindings/cpp/src/proton_event.hpp @@ -273,14 +273,14 @@ class proton_event : public event ///@} virtual void dispatch(handler &h); - virtual class event_loop &event_loop() const; - virtual class container &container() const; - virtual class engine &engine() const; - virtual class connection &connection() const; - virtual class sender& sender() const; - virtual class receiver& receiver() const; - virtual class link& link() const; - virtual class delivery& delivery() const; + virtual class event_loop& event_loop() const; + virtual class container& container() const; + virtual class engine& engine() const; + virtual class connection connection() const; + virtual class sender sender() const; + virtual class receiver receiver() const; + virtual class link link() const; + virtual class delivery delivery() const; /** Get type of event */ event_type type() const; http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/reactor.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/reactor.cpp b/proton-c/bindings/cpp/src/reactor.cpp index fcef673..31d3275 100644 --- a/proton-c/bindings/cpp/src/reactor.cpp +++ b/proton-c/bindings/cpp/src/reactor.cpp @@ -18,25 +18,65 @@ */ #include "proton/reactor.hpp" +#include "proton/acceptor.hpp" +#include "proton/connection.hpp" +#include "proton/task.hpp" +#include "proton/url.hpp" + +#include "contexts.hpp" #include <proton/reactor.h> namespace proton { -pn_unique_ptr<reactor> reactor::create() { - return pn_unique_ptr<reactor>(reactor::cast(pn_reactor())); +reactor reactor::create() { + return reactor(pn_reactor()); +} + +void reactor::run() { pn_reactor_run(pn_object()); } +void reactor::start() { pn_reactor_start(pn_object()); } +bool reactor::process() { return pn_reactor_process(pn_object()); } +void reactor::stop() { pn_reactor_stop(pn_object()); } +void reactor::wakeup() { pn_reactor_wakeup(pn_object()); } +bool reactor::quiesced() { return pn_reactor_quiesced(pn_object()); } +void reactor::yield() { pn_reactor_yield(pn_object()); } +amqp_timestamp reactor::mark() { return pn_reactor_mark(pn_object()); } +amqp_timestamp reactor::now() { return pn_reactor_now(pn_object()); } + +acceptor reactor::listen(const url& url){ + return pn_reactor_acceptor(pn_object(), url.host().c_str(), url.port().c_str(), 0); +} + +task reactor::schedule(int delay, pn_handler_t* handler) { + return pn_reactor_schedule(pn_object(), delay, handler); +} + +connection reactor::connection(pn_handler_t* h) const { + return pn_reactor_connection(pn_object(), h); +} + +pn_io_t* reactor::pn_io() const { + return pn_reactor_io(pn_object()); } -void reactor::run() { pn_reactor_run(pn_cast(this)); } -void reactor::start() { pn_reactor_start(pn_cast(this)); } -bool reactor::process() { return pn_reactor_process(pn_cast(this)); } -void reactor::stop() { pn_reactor_stop(pn_cast(this)); } -void reactor::wakeup() { pn_reactor_wakeup(pn_cast(this)); } -bool reactor::quiesced() { return pn_reactor_quiesced(pn_cast(this)); } -void reactor::yield() { pn_reactor_yield(pn_cast(this)); } +void reactor::pn_handler(pn_handler_t* h) { + pn_reactor_set_handler(pn_object(), h); +} + +pn_handler_t* reactor::pn_handler() const { + return pn_reactor_get_handler(pn_object()); +} + +void reactor::pn_global_handler(pn_handler_t* h) { + pn_reactor_set_global_handler(pn_object(), h); +} + +pn_handler_t* reactor::pn_global_handler() const { + return pn_reactor_get_global_handler(pn_object()); +} duration reactor::timeout() { - pn_millis_t tmo = pn_reactor_get_timeout(pn_cast(this)); + pn_millis_t tmo = pn_reactor_get_timeout(pn_object()); if (tmo == PN_MILLIS_MAX) return duration::FOREVER; return duration(tmo); @@ -44,11 +84,14 @@ duration reactor::timeout() { void reactor::timeout(duration timeout) { if (timeout == duration::FOREVER || timeout.milliseconds > PN_MILLIS_MAX) - pn_reactor_set_timeout(pn_cast(this), PN_MILLIS_MAX); + pn_reactor_set_timeout(pn_object(), PN_MILLIS_MAX); else - pn_reactor_set_timeout(pn_cast(this), timeout.milliseconds); + pn_reactor_set_timeout(pn_object(), timeout.milliseconds); } +void reactor::container_context(container& c) { + proton::container_context(pn_object(), c); +} void reactor::operator delete(void* p) { pn_reactor_free(reinterpret_cast<pn_reactor_t*>(p)); http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/receiver.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/receiver.cpp b/proton-c/bindings/cpp/src/receiver.cpp index d997c23..dec9fa6 100644 --- a/proton-c/bindings/cpp/src/receiver.cpp +++ b/proton-c/bindings/cpp/src/receiver.cpp @@ -30,9 +30,7 @@ namespace proton { void receiver::flow(int count) { - pn_link_flow(pn_cast(this), count); + pn_link_flow(pn_object(), count); } -receiver* receiver::cast(pn_type* p) { return link::cast(p)->receiver(); } - } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/sender.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/sender.cpp b/proton-c/bindings/cpp/src/sender.cpp index cd1b0ae..177e6f0 100644 --- a/proton-c/bindings/cpp/src/sender.cpp +++ b/proton-c/bindings/cpp/src/sender.cpp @@ -41,19 +41,17 @@ namespace { amqp_ulong tag_counter = 0; } -delivery& sender::send(const message &message) { +delivery sender::send(const message &message) { amqp_ulong id = ++tag_counter; pn_delivery_t *dlv = - pn_delivery(pn_cast(this), pn_dtag(reinterpret_cast<const char*>(&id), sizeof(id))); + pn_delivery(pn_object(), pn_dtag(reinterpret_cast<const char*>(&id), sizeof(id))); std::string buf; message.encode(buf); - pn_link_send(pn_cast(this), buf.data(), buf.size()); - pn_link_advance(pn_cast(this)); - if (pn_link_snd_settle_mode(pn_cast(this)) == PN_SND_SETTLED) + pn_link_send(pn_object(), buf.data(), buf.size()); + pn_link_advance(pn_object()); + if (pn_link_snd_settle_mode(pn_object()) == PN_SND_SETTLED) pn_delivery_settle(dlv); - return *delivery::cast(dlv); + return dlv; } -sender* sender::cast(pn_type* p) { return link::cast(p)->sender(); } - } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/session.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/session.cpp b/proton-c/bindings/cpp/src/session.cpp index 6d0d955..e903080 100644 --- a/proton-c/bindings/cpp/src/session.cpp +++ b/proton-c/bindings/cpp/src/session.cpp @@ -30,43 +30,40 @@ namespace proton { void session::open() { - pn_session_open(pn_cast(this)); + pn_session_open(pn_object()); } -connection &session::connection() const { - return *proton::connection::cast(pn_session_connection(pn_cast(this))); +connection session::connection() const { + return pn_session_connection(pn_object()); } namespace { std::string set_name(const std::string& name, session* s) { if (name.empty()) - return connection_context::get( - pn_cast(&s->connection())).container_impl->next_link_name(); + return s->connection().context().container_impl->next_link_name(); return name; } } -receiver& session::create_receiver(const std::string& name) { - return *reinterpret_cast<receiver*>( - pn_receiver(pn_cast(this), set_name(name, this).c_str())); +receiver session::create_receiver(const std::string& name) { + return pn_receiver(pn_object(), set_name(name, this).c_str()); } -sender& session::create_sender(const std::string& name) { - return *reinterpret_cast<sender*>( - pn_sender(pn_cast(this), set_name(name, this).c_str())); +sender session::create_sender(const std::string& name) { + return pn_sender(pn_object(), set_name(name, this).c_str()); } -sender& session::open_sender(const std::string &addr, handler *h) { - sender& snd = create_sender(); +sender session::open_sender(const std::string &addr, handler *h) { + sender snd = create_sender(); snd.target().address(addr); if (h) snd.handler(*h); snd.open(); return snd; } -receiver& session::open_receiver(const std::string &addr, bool dynamic, handler *h) +receiver session::open_receiver(const std::string &addr, bool dynamic, handler *h) { - receiver& rcv = create_receiver(); + receiver rcv = create_receiver(); rcv.source().address(addr); if (dynamic) rcv.source().dynamic(true); if (h) rcv.handler(*h); @@ -74,12 +71,17 @@ receiver& session::open_receiver(const std::string &addr, bool dynamic, handler return rcv; } -endpoint::state session::state() const { return pn_session_state(pn_cast(this)); } +session session::next(endpoint::state s) const +{ + return pn_session_next(pn_object(), s); +} + +endpoint::state session::state() const { return pn_session_state(pn_object()); } link_range session::find_links(endpoint::state mask) const { link_range r(connection().find_links(mask)); - link_iterator i(r.begin(), this); - if (i && this != &i->session()) + link_iterator i(r.begin(), *this); + if (i && *this != i->session()) ++i; return link_range(i); } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/task.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/task.cpp b/proton-c/bindings/cpp/src/task.cpp index 6e6b4a6..7c0a683 100644 --- a/proton-c/bindings/cpp/src/task.cpp +++ b/proton-c/bindings/cpp/src/task.cpp @@ -24,6 +24,6 @@ namespace proton { -void task::cancel() { pn_task_cancel(pn_cast(this)); } +void task::cancel() { pn_task_cancel(pn_object()); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/terminus.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/terminus.cpp b/proton-c/bindings/cpp/src/terminus.cpp index 8948eb5..def6aa9 100644 --- a/proton-c/bindings/cpp/src/terminus.cpp +++ b/proton-c/bindings/cpp/src/terminus.cpp @@ -25,44 +25,44 @@ namespace proton { terminus::type_t terminus::type() const { - return (type_t) pn_terminus_get_type(pn_cast(this)); + return (type_t) pn_terminus_get_type(object_); } void terminus::type(type_t type) { - pn_terminus_set_type(pn_cast(this), (pn_terminus_type_t) type); + pn_terminus_set_type(object_, (pn_terminus_type_t) type); } terminus::expiry_policy_t terminus::expiry_policy() const { - return (expiry_policy_t) pn_terminus_get_type(pn_cast(this)); + return (expiry_policy_t) pn_terminus_get_type(object_); } void terminus::expiry_policy(expiry_policy_t policy) { - pn_terminus_set_expiry_policy(pn_cast(this), (pn_expiry_policy_t) policy); + pn_terminus_set_expiry_policy(object_, (pn_expiry_policy_t) policy); } terminus::distribution_mode_t terminus::distribution_mode() const { - return (distribution_mode_t) pn_terminus_get_type(pn_cast(this)); + return (distribution_mode_t) pn_terminus_get_type(object_); } void terminus::distribution_mode(distribution_mode_t mode) { - pn_terminus_set_distribution_mode(pn_cast(this), (pn_distribution_mode_t) mode); + pn_terminus_set_distribution_mode(object_, (pn_distribution_mode_t) mode); } std::string terminus::address() const { - const char *addr = pn_terminus_get_address(pn_cast(this)); + const char *addr = pn_terminus_get_address(object_); return addr ? std::string(addr) : std::string(); } void terminus::address(const std::string &addr) { - pn_terminus_set_address(pn_cast(this), addr.c_str()); + pn_terminus_set_address(object_, addr.c_str()); } bool terminus::dynamic() const { - return (type_t) pn_terminus_is_dynamic(pn_cast(this)); + return (type_t) pn_terminus_is_dynamic(object_); } void terminus::dynamic(bool d) { - pn_terminus_set_dynamic(pn_cast(this), d); + pn_terminus_set_dynamic(object_, d); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/transport.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/transport.cpp b/proton-c/bindings/cpp/src/transport.cpp index 58114ae..6e6e612 100644 --- a/proton-c/bindings/cpp/src/transport.cpp +++ b/proton-c/bindings/cpp/src/transport.cpp @@ -24,8 +24,8 @@ namespace proton { -connection* transport::connection() const { - return connection::cast(pn_transport_connection(pn_cast(this))); +connection transport::connection() const { + return pn_transport_connection(pn_object()); } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/proton-c/bindings/cpp/src/value.cpp ---------------------------------------------------------------------- diff --git a/proton-c/bindings/cpp/src/value.cpp b/proton-c/bindings/cpp/src/value.cpp index 7059d69..be5ca5e 100644 --- a/proton-c/bindings/cpp/src/value.cpp +++ b/proton-c/bindings/cpp/src/value.cpp @@ -28,27 +28,23 @@ namespace proton { value::value() : data_(data::create()) {} -value::value(const value& x) : data_(data::create()) { *data_ = *x.data_; } +value::value(const value& x) : data_(data::create()) { data_ = x.data_; } -value::value(const data& x) : data_(data::create()) { *data_ = x; } +value& value::operator=(const value& x) { data_ = x.data_; return *this; } -value& value::operator=(const value& x) { *data_ = *x.data_; return *this; } +void value::clear() { data_.clear(); } -value& value::operator=(const data& x) { *data_ = x; return *this; } +bool value::empty() const { return data_.empty(); } -void value::clear() { data_->clear(); } +class encoder value::encoder() { clear(); return data_.encoder(); } -bool value::empty() const { return data_->empty(); } - -class encoder& value::encoder() { clear(); return data_->encoder(); } - -class decoder& value::decoder() const { data_->decoder().rewind(); return data_->decoder(); } +class decoder value::decoder() const { data_.decoder().rewind(); return data_.decoder(); } type_id value::type() const { return decoder().type(); } -bool value::operator==(const value& x) const { return *data_ == *x.data_; } +bool value::operator==(const value& x) const { return data_ == x.data_; } -bool value::operator<(const value& x) const { return *data_ < *x.data_; } +bool value::operator<(const value& x) const { return data_ < x.data_; } std::ostream& operator<<(std::ostream& o, const value& v) { // pn_inspect prints strings with quotes which is not normal in C++. @@ -57,7 +53,7 @@ std::ostream& operator<<(std::ostream& o, const value& v) { case SYMBOL: return o << v.get<std::string>(); default: - return o << *v.data_; + return o << v.data_; } } http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/645fe09e/tests/tools/apps/cpp/reactor_send.cpp ---------------------------------------------------------------------- diff --git a/tests/tools/apps/cpp/reactor_send.cpp b/tests/tools/apps/cpp/reactor_send.cpp index 6bdab23..86406f6 100644 --- a/tests/tools/apps/cpp/reactor_send.cpp +++ b/tests/tools/apps/cpp/reactor_send.cpp @@ -49,7 +49,7 @@ class reactor_send : public proton::messaging_handler { proton::amqp_binary received_content_; bool replying_; proton::message_id id_value_; - pn_reactor_t *reactor_; + proton::reactor reactor_; public: reactor_send(const std::string &url, int c, int size, bool replying) @@ -65,16 +65,16 @@ class reactor_send : public proton::messaging_handler { void on_start(proton::event &e) { e.container().open_sender(url_); - reactor_ = pn_cast(&e.container().reactor()); + reactor_ = e.container().reactor(); } void on_sendable(proton::event &e) { - proton::sender& sender = e.sender(); + proton::sender sender = e.sender(); while (sender.credit() && sent_ < total_) { id_value_ = sent_ + 1; message_.correlation_id(id_value_); - proton::amqp_timestamp reactor_now(pn_reactor_now(reactor_)); + proton::amqp_timestamp reactor_now(reactor_.now()); message_.creation_time(reactor_now); sender.send(message_); sent_++; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
