void messaging_adapter::on_connection_remote_close(proton_event &pe) { pn_event_t *cevent = pe.pn_event(); pn_connection_t *conn = pn_event_connection(cevent); connection c(make_wrapper(conn)); if (pn_condition_is_set(pn_connection_remote_condition(conn))) { delegate_.on_connection_error(c); } delegate_.on_connection_close(c); pn_connection_close(conn); }
std::string connection_engine::error_str() const { pn_condition_t *c = pn_connection_remote_condition(connection_.pn_object()); if (!c || !pn_condition_is_set(c)) c = pn_transport_condition(ctx_->transport); if (c && pn_condition_is_set(c)) { std::ostringstream os; os << pn_condition_get_name(c) << ": " << pn_condition_get_description(c); return os.str(); } return ""; }
void messaging_adapter::on_connection_remote_close(event &e) { proton_event *pe = dynamic_cast<proton_event*>(&e); if (pe) { pn_event_t *cevent = pe->pn_event(); pn_connection_t *connection = pn_event_connection(cevent); if (pn_condition_is_set(pn_connection_remote_condition(connection))) { messaging_event mevent(messaging_event::CONNECTION_ERROR, *pe); on_connection_error(mevent); } else { messaging_event mevent(messaging_event::CONNECTION_CLOSE, *pe); on_connection_close(mevent); } pn_connection_close(connection); } }
error_condition connection::error() const { return make_wrapper(pn_connection_remote_condition(pn_object())); }