static void qdr_agent_write_column_CT(qd_composed_field_t *body, int col, qdr_core_t *core) { switch(col) { case QDR_ROUTER_IDENTITY: // There is only one instance of router. Just give it an identity of 1 qd_compose_insert_string(body, "1"); break; case QDR_ROUTER_TYPE: qd_compose_insert_string(body, "org.apache.qpid.dispatch.router"); break; case QDR_ROUTER_MODE: qd_compose_insert_string(body, router_mode(core->router_mode)); break; case QDR_ROUTER_AREA: if (core->router_area) qd_compose_insert_string(body, core->router_area); else qd_compose_insert_null(body); break; case QDR_ROUTER_VERSION: qd_compose_insert_string(body, QPID_DISPATCH_VERSION); break; case QDR_ROUTER_HELLO_INTERVAL: qd_compose_insert_null(body); break; case QDR_ROUTER_ADDR_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(core->addrs)); break; case QDR_ROUTER_LINK_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(core->open_links)); break; case QDR_ROUTER_NODE_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(core->routers)); break; case QDR_ROUTER_CONNECTION_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(core->open_connections)); break; case QDR_ROUTER_LINK_ROUTE_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(core->link_routes)); break; case QDR_ROUTER_AUTO_LINK_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(core->auto_links)); break; case QDR_ROUTER_ROUTER_ID: case QDR_ROUTER_ID: case QDR_ROUTER_NAME: if (core->router_id) qd_compose_insert_string(body, core->router_id); else qd_compose_insert_null(body); break; default: qd_compose_insert_null(body); break; } }
static void qdr_agent_write_column_CT(qd_composed_field_t *body, int col, qdr_link_t *link) { char *text = 0; switch(col) { case QDR_LINK_NAME: { if (link->name) qd_compose_insert_string(body, link->name); else qd_compose_insert_null(body); break; } case QDR_LINK_IDENTITY: { char id[100]; snprintf(id, 100, "%"PRId64, link->identity); qd_compose_insert_string(body, id); break; } case QDR_LINK_TYPE: qd_compose_insert_string(body, "org.apache.qpid.dispatch.router.link"); break; case QDR_LINK_LINK_NAME: qd_compose_insert_string(body, link->name); break; case QDR_LINK_LINK_TYPE: qd_compose_insert_string(body, qd_link_type_name(link->link_type)); break; case QDR_LINK_LINK_DIR: qd_compose_insert_string(body, link->link_direction == QD_INCOMING ? "in" : "out"); break; case QDR_LINK_OWNING_ADDR: if (link->owning_addr) qd_compose_insert_string(body, address_key(link->owning_addr)); else qd_compose_insert_null(body); break; case QDR_LINK_CAPACITY: qd_compose_insert_uint(body, link->capacity); break; case QDR_LINK_PEER: if (link->connected_link) { char id[100]; snprintf(id, 100, "%"PRId64, link->connected_link->identity); qd_compose_insert_string(body, id); } else qd_compose_insert_null(body); break; case QDR_LINK_UNDELIVERED_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(link->undelivered)); break; case QDR_LINK_UNSETTLED_COUNT: qd_compose_insert_ulong(body, DEQ_SIZE(link->unsettled)); break; case QDR_LINK_DELIVERY_COUNT: qd_compose_insert_ulong(body, link->total_deliveries); break; case QDR_LINK_CONNECTION_ID: qd_compose_insert_ulong(body, link->conn->management_id); break; case QDR_LINK_ADMIN_STATE: text = link->admin_enabled ? "enabled" : "disabled"; qd_compose_insert_string(body, text); break; case QDR_LINK_OPER_STATE: switch (link->oper_status) { case QDR_LINK_OPER_UP: text = "up"; break; case QDR_LINK_OPER_DOWN: text = "down"; break; case QDR_LINK_OPER_QUIESCING: text = "quiescing"; break; case QDR_LINK_OPER_IDLE: text = "idle"; break; default: text = 0; } if (!!text) qd_compose_insert_string(body, text); else qd_compose_insert_null(body); break; case QDR_LINK_PRESETTLED_COUNT: qd_compose_insert_ulong(body, link->presettled_deliveries); break; case QDR_LINK_ACCEPTED_COUNT: qd_compose_insert_ulong(body, link->accepted_deliveries); break; case QDR_LINK_REJECTED_COUNT: qd_compose_insert_ulong(body, link->rejected_deliveries); break; case QDR_LINK_RELEASED_COUNT: qd_compose_insert_ulong(body, link->released_deliveries); break; case QDR_LINK_MODIFIED_COUNT: qd_compose_insert_ulong(body, link->modified_deliveries); break; default: qd_compose_insert_null(body); break; } }
static void qdr_insert_address_columns_CT(qdr_core_t *core, qdr_address_t *addr, qd_composed_field_t *body, int column_index) { switch(column_index) { case QDR_ADDRESS_NAME: case QDR_ADDRESS_IDENTITY: case QDR_ADDRESS_KEY: if (addr->hash_handle) qd_compose_insert_string(body, (const char*) qd_hash_key_by_handle(addr->hash_handle)); else qd_compose_insert_null(body); break; case QDR_ADDRESS_TYPE: qd_compose_insert_string(body, "org.apache.qpid.dispatch.router.address"); break; case QDR_ADDRESS_DISTRIBUTION: { switch (addr->treatment) { case QD_TREATMENT_MULTICAST_FLOOD: qd_compose_insert_string(body, "flood"); break; case QD_TREATMENT_MULTICAST_ONCE: qd_compose_insert_string(body, "multicast"); break; case QD_TREATMENT_ANYCAST_CLOSEST: qd_compose_insert_string(body, "closest"); break; case QD_TREATMENT_ANYCAST_BALANCED: qd_compose_insert_string(body, "balanced"); break; case QD_TREATMENT_LINK_BALANCED: qd_compose_insert_string(body, "linkBalanced"); break; } break; } case QDR_ADDRESS_IN_PROCESS: qd_compose_insert_uint(body, DEQ_SIZE(addr->subscriptions)); break; case QDR_ADDRESS_SUBSCRIBER_COUNT: qd_compose_insert_uint(body, DEQ_SIZE(addr->rlinks)); break; case QDR_ADDRESS_REMOTE_COUNT: qd_compose_insert_uint(body, qd_bitmask_cardinality(addr->rnodes)); break; case QDR_ADDRESS_CONTAINER_COUNT: qd_compose_insert_uint(body, DEQ_SIZE(addr->conns)); break; case QDR_ADDRESS_REMOTE_HOST_ROUTERS: { qd_compose_start_list(body); int c; int bit; for (QD_BITMASK_EACH(addr->rnodes, bit, c)) { qdr_node_t *rnode = core->routers_by_mask_bit[bit]; if (rnode && rnode->owning_addr) { const char *ar = (char*) qd_hash_key_by_handle(rnode->owning_addr->hash_handle); qd_compose_insert_string(body, ar + 1); // Remove the 'R' prefix from the router address } } qd_compose_end_list(body); break; } case QDR_ADDRESS_DELIVERIES_INGRESS: qd_compose_insert_ulong(body, addr->deliveries_ingress); break; case QDR_ADDRESS_DELIVERIES_EGRESS: qd_compose_insert_ulong(body, addr->deliveries_egress); break; case QDR_ADDRESS_DELIVERIES_TRANSIT: qd_compose_insert_ulong(body, addr->deliveries_transit); break; case QDR_ADDRESS_DELIVERIES_TO_CONTAINER: qd_compose_insert_ulong(body, addr->deliveries_to_container); break; case QDR_ADDRESS_DELIVERIES_FROM_CONTAINER: qd_compose_insert_ulong(body, addr->deliveries_from_container); break; case QDR_ADDRESS_TRANSIT_OUTSTANDING: if (addr->outstanding_deliveries) { qd_compose_start_list(body); for (int i = 0; i < qd_bitmask_width(); i++) qd_compose_insert_long(body, addr->outstanding_deliveries[i]); qd_compose_end_list(body); } else qd_compose_insert_null(body); break; case QDR_ADDRESS_TRACKED_DELIVERIES: qd_compose_insert_long(body, addr->tracked_deliveries); break; default: qd_compose_insert_null(body); break; } }