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);
}
Exemplo n.º 2
0
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);
    }
}
Exemplo n.º 4
0
error_condition connection::error() const {
    return make_wrapper(pn_connection_remote_condition(pn_object()));
}