static void inspector_show_out_port(const struct sol_flow_node *node, uint16_t port_idx) { const struct sol_flow_port_description *port; if (port_idx == SOL_FLOW_NODE_PORT_ERROR) { fputs(SOL_FLOW_NODE_PORT_ERROR_NAME, stdout); return; } port = sol_flow_node_get_port_out_description(sol_flow_node_get_type(node), port_idx); if (port) { if (port->name) { inspector_print_port_name(port_idx, port); if (port->data_type) fprintf(stdout, "(%s)", port->data_type); return; } } fprintf(stdout, "%hu", port_idx); }
static int32_t get_int32_packet_and_log(const struct sol_flow_node *n, uint16_t port, const struct sol_flow_packet *packet) { const struct sol_flow_node_type *type; const struct sol_flow_port_description *port_desc; int32_t value; int err; /* get the struct sol_irange::value member. This function also validates if the * given packet is of requested type (irange), otherise will return an -errno. */ err = sol_flow_packet_get_irange_value(packet, &value); if (err < 0) { fprintf(stderr, "ERROR: could not get irange packet value: %p %s\n", packet, sol_util_strerrora(-err)); return err; } /* log the value to stdout. First we get the node type from * current node (minutes or seconds), then we find the port * description from its index. with that we can get the port name. */ type = sol_flow_node_get_type(n); port_desc = sol_flow_node_get_port_out_description(type, port); if (!port_desc) { fprintf(stderr, "ERROR: no output port description for index %" PRIu16 " of node %p\n", port, n); return -ENOENT; } printf("node type %s port #%" PRIu16 " '%s' (%s): %" PRId32 "\n", type->description->name, port, port_desc->name, port_desc->data_type, value); return value; }