static bool timer_tick(void *data) { struct timer_data *mdata = data; sol_flow_send_empty_packet(mdata->node, SOL_FLOW_NODE_TYPE_TIMER__OUT__OUT); return true; }
static void empty_receiver(void *data, uint32_t id, struct sol_blob *message) { struct sol_flow_node *node = data; sol_flow_send_empty_packet(node, SOL_FLOW_NODE_TYPE_IPM_EMPTY_READER__OUT__OUT); sol_blob_unref(message); }
static void common_consumed_callback(void *data, uint32_t id, struct sol_blob *message) { struct sol_flow_node *node = data; struct ipm_writer_node_type *type; type = (struct ipm_writer_node_type *)sol_flow_node_get_type(node); sol_flow_send_empty_packet(node, type->consumed_port); }
static int inc_process(struct sol_flow_node *node, void *data, uint16_t port, uint16_t conn_id, const struct sol_flow_packet *packet) { struct accumulator_data *mdata = data; mdata->val.val += mdata->val.step; if (mdata->val.val > mdata->val.max) { mdata->val.val = mdata->val.min; sol_flow_send_empty_packet(node, SOL_FLOW_NODE_TYPE_INT_ACCUMULATOR__OUT__OVERFLOW); } return sol_flow_send_irange_packet(node, SOL_FLOW_NODE_TYPE_INT_ACCUMULATOR__OUT__OUT, &mdata->val); }
static int constant_empty_open(struct sol_flow_node *node, void *data, const struct sol_flow_node_options *options) { return sol_flow_send_empty_packet(node, SOL_FLOW_NODE_TYPE_CONSTANT_EMPTY__OUT__OUT); }