Exemple #1
0
void events(ldp_connection_t *conn, pn_collector_t *coll) {
    pn_event_t *event;
    while((event = pn_collector_peek(coll))) {
        switch (pn_event_type(event)) {
        case PN_EVENT_NONE:
            break;
        case PN_CONNECTION_REMOTE_STATE:
        case PN_CONNECTION_LOCAL_STATE:
            process_connection(conn, event);
            break;
        case PN_SESSION_REMOTE_STATE:
        case PN_SESSION_LOCAL_STATE:
            process_session(conn, event);
            break;
        case PN_LINK_REMOTE_STATE:
        case PN_LINK_LOCAL_STATE:
            process_link(conn, event);
            break;
        case PN_LINK_FLOW:
            process_flow(conn, event);
            break;
        case PN_DELIVERY:
            process_delivery(conn, event);
            break;
        case PN_TRANSPORT:
            process_transport(conn, event);
            break;

        }
        pn_collector_pop(coll);
    }
}
Exemple #2
0
static void pn_collector_drain(pn_collector_t *collector)
{
  assert(collector);

  while (pn_collector_peek(collector)) {
    pn_collector_pop(collector);
  }

  assert(!collector->head);
  assert(!collector->tail);
}
void connection_engine::dispatch() {
    proton_handler& h = *ctx_->engine_handler->messaging_adapter_;
    pn_collector_t* c = ctx_->collector;
    for (pn_event_t *e = pn_collector_peek(c); e; e = pn_collector_peek(c)) {
        if (pn_event_type(e) == PN_CONNECTION_INIT) {
            // Make the messaging_adapter issue a START event.
            proton_event(e, PN_REACTOR_INIT, 0).dispatch(h);
        }
        proton_event(e, pn_event_type(e), 0).dispatch(h);
        pn_collector_pop(c);
    }
}
bool connection_engine::dispatch() {
    if (collector_.get()) {
        for (pn_event_t *e = pn_collector_peek(collector_.get());
             e;
             e = pn_collector_peek(collector_.get()))
        {
            proton_event pe(e, container_);
            try {
                pe.dispatch(*handler_);
            } catch (const std::exception& e) {
                disconnected(error_condition("exception", e.what()));
            }
            pn_collector_pop(collector_.get());
        }
    }
    return !(pn_transport_closed(unwrap(transport_)));
}