X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fgraph%2Fmessage%2Fiterator.h;h=52a1c046530c3e018d23a44a5dae88c90b78f33e;hb=2e1b56154a3032b52687751ed2e5c1a8a5134f7c;hp=93d9aa23e122f81d8d0eef56c18bd07b7a3dc389;hpb=ca02df0ad8ae9a1a3640956d91ca31059d0b203a;p=babeltrace.git diff --git a/src/lib/graph/message/iterator.h b/src/lib/graph/message/iterator.h index 93d9aa23..52a1c046 100644 --- a/src/lib/graph/message/iterator.h +++ b/src/lib/graph/message/iterator.h @@ -36,11 +36,6 @@ struct bt_port; struct bt_graph; -enum bt_message_iterator_type { - BT_MESSAGE_ITERATOR_TYPE_SELF_COMPONENT_PORT_INPUT, - BT_MESSAGE_ITERATOR_TYPE_PORT_OUTPUT, -}; - enum bt_self_component_port_input_message_iterator_state { /* Iterator is not initialized */ BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_NON_INITIALIZED, @@ -70,12 +65,6 @@ enum bt_self_component_port_input_message_iterator_state { BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_LAST_SEEKING_RETURNED_ERROR, }; -struct bt_message_iterator { - struct bt_object base; - enum bt_message_iterator_type type; - GPtrArray *msgs; -}; - typedef enum bt_component_class_message_iterator_next_method_status (*bt_self_component_port_input_message_iterator_next_method)( void *, bt_message_array_const, uint64_t, uint64_t *); @@ -88,20 +77,27 @@ typedef enum bt_component_class_message_iterator_seek_beginning_method_status (*bt_self_component_port_input_message_iterator_seek_beginning_method)( void *); -typedef bt_bool +typedef enum bt_component_class_message_iterator_can_seek_ns_from_origin_method_status (*bt_self_component_port_input_message_iterator_can_seek_ns_from_origin_method)( - void *, int64_t); + void *, int64_t, bt_bool *); -typedef bt_bool +typedef enum bt_component_class_message_iterator_can_seek_beginning_method_status (*bt_self_component_port_input_message_iterator_can_seek_beginning_method)( - void *); + void *, bt_bool *); + +struct bt_self_message_iterator_configuration { + bool frozen; + bool can_seek_forward; +}; struct bt_self_component_port_input_message_iterator { - struct bt_message_iterator base; + struct bt_object base; + GPtrArray *msgs; struct bt_component *upstream_component; /* Weak */ struct bt_port *upstream_port; /* Weak */ struct bt_connection *connection; /* Weak */ struct bt_graph *graph; /* Weak */ + struct bt_self_message_iterator_configuration config; /* * Array of @@ -126,9 +122,13 @@ struct bt_self_component_port_input_message_iterator { struct { bt_self_component_port_input_message_iterator_next_method next; + + /* These two are always both set or both unset. */ bt_self_component_port_input_message_iterator_seek_ns_from_origin_method seek_ns_from_origin; - bt_self_component_port_input_message_iterator_seek_beginning_method seek_beginning; bt_self_component_port_input_message_iterator_can_seek_ns_from_origin_method can_seek_ns_from_origin; + + /* These two are always both set or both unset. */ + bt_self_component_port_input_message_iterator_seek_beginning_method seek_beginning; bt_self_component_port_input_message_iterator_can_seek_beginning_method can_seek_beginning; } methods; @@ -199,18 +199,6 @@ struct bt_self_component_port_input_message_iterator { void *user_data; }; -struct bt_port_output_message_iterator { - struct bt_message_iterator base; - struct bt_graph *graph; /* Owned by this */ - struct bt_component_sink *colander; /* Owned by this */ - - /* - * Only used temporarily as a bridge between a colander sink and - * the user. - */ - uint64_t count; -}; - BT_HIDDEN void bt_self_component_port_input_message_iterator_try_finalize( struct bt_self_component_port_input_message_iterator *iterator); @@ -226,19 +214,19 @@ const char *bt_self_component_port_input_message_iterator_state_string( { switch (state) { case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_ACTIVE: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_ACTIVE"; + return "ACTIVE"; case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_ENDED: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_ENDED"; + return "ENDED"; case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_FINALIZING: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_FINALIZING"; + return "FINALIZING"; case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_FINALIZED: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_FINALIZED"; + return "FINALIZED"; case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_SEEKING: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_SEEKING"; + return "SEEKING"; case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_LAST_SEEKING_RETURNED_AGAIN: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_LAST_SEEKING_RETURNED_AGAIN"; + return "LAST_SEEKING_RETURNED_AGAIN"; case BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_LAST_SEEKING_RETURNED_ERROR: - return "BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_STATE_LAST_SEEKING_RETURNED_ERROR"; + return "LAST_SEEKING_RETURNED_ERROR"; default: return "(unknown)"; }