Implement ctf.lttng-live component
[babeltrace.git] / plugins / ctf / common / notif-iter / notif-iter.c
index f6fe230c6b84a9b3090589d3fa74a0320532f571..bc20f8814b1de423158fa04961a9134d42f4a599 100644 (file)
@@ -162,9 +162,6 @@ struct bt_ctf_notif_iter {
                struct bt_ctf_event_class *event_class;
        } meta;
 
-       /* Clock class priority map (owned by this) */
-       struct bt_clock_class_priority_map *cc_prio_map;
-
        /* Current packet (NULL if not created yet) */
        struct bt_ctf_packet *packet;
 
@@ -364,7 +361,7 @@ static inline
 enum bt_ctf_notif_iter_status notif_iter_status_from_m_status(
                enum bt_ctf_notif_iter_medium_status m_status)
 {
-       return m_status;
+       return (int) m_status;
 }
 
 static inline
@@ -385,38 +382,12 @@ size_t packet_at(struct bt_ctf_notif_iter *notit)
        return notit->buf.packet_offset + notit->buf.at;
 }
 
-static inline
-size_t remaining_content_bits(struct bt_ctf_notif_iter *notit)
-{
-       if (notit->cur_content_size == -1) {
-               return -1;
-       }
-
-       return notit->cur_content_size - packet_at(notit);
-}
-
-static inline
-size_t remaining_packet_bits(struct bt_ctf_notif_iter *notit)
-{
-       if (notit->cur_packet_size == -1) {
-               return -1;
-       }
-
-       return notit->cur_packet_size - packet_at(notit);
-}
-
 static inline
 void buf_consume_bits(struct bt_ctf_notif_iter *notit, size_t incr)
 {
        notit->buf.at += incr;
 }
 
-static inline
-bool buf_has_enough_bits(struct bt_ctf_notif_iter *notit, size_t sz)
-{
-       return buf_available_bits(notit) >= sz;
-}
-
 static
 enum bt_ctf_notif_iter_status request_medium_bytes(
                struct bt_ctf_notif_iter *notit)
@@ -2085,7 +2056,7 @@ struct bt_ctf_event *create_event(struct bt_ctf_notif_iter *notit)
                goto error;
        }
 
-       ret = bt_ctf_event_set_payload_field(event,
+       ret = bt_ctf_event_set_event_payload(event,
                notit->dscopes.event_payload);
        if (ret) {
                goto error;
@@ -2193,6 +2164,7 @@ void notify_end_of_packet(struct bt_ctf_notif_iter *notit,
 
 static
 void notify_event(struct bt_ctf_notif_iter *notit,
+               struct bt_clock_class_priority_map *cc_prio_map,
                struct bt_notification **notification)
 {
        struct bt_ctf_event *event;
@@ -2204,7 +2176,7 @@ void notify_event(struct bt_ctf_notif_iter *notit,
                goto end;
        }
 
-       ret = bt_notification_event_create(event, notit->cc_prio_map);
+       ret = bt_notification_event_create(event, cc_prio_map);
        if (!ret) {
                goto end;
        }
@@ -2213,30 +2185,6 @@ end:
        BT_PUT(event);
 }
 
-//FIXME: not used ?
-static
-void notify_eos(struct bt_ctf_notif_iter *notit,
-               struct bt_notification **notification)
-{
-       struct bt_ctf_stream *stream = NULL;
-       struct bt_notification *ret = NULL;
-
-       /* Ask the user for the stream */
-       stream = notit->medium.medops.get_stream(notit->meta.stream_class,
-                       notit->medium.data);
-       if (!stream) {
-               goto end;
-       }
-
-       ret = bt_notification_stream_end_create(stream);
-       if (!ret) {
-               goto end;
-       }
-       *notification = ret;
-end:
-       BT_PUT(stream);
-}
-
 static
 int init_clock_states(GHashTable *clock_states, struct bt_ctf_trace *trace)
 {
@@ -2251,7 +2199,7 @@ int init_clock_states(GHashTable *clock_states, struct bt_ctf_trace *trace)
        for (i = 0; i < clock_class_count; i++) {
                struct bt_ctf_clock_class *clock_class;
 
-               clock_class = bt_ctf_trace_get_clock_class(trace, i);
+               clock_class = bt_ctf_trace_get_clock_class_by_index(trace, i);
                if (!clock_class) {
                        ret = -1;
                        goto end;
@@ -2312,7 +2260,6 @@ end:
 
 BT_HIDDEN
 struct bt_ctf_notif_iter *bt_ctf_notif_iter_create(struct bt_ctf_trace *trace,
-               struct bt_clock_class_priority_map *cc_prio_map,
                size_t max_request_sz,
                struct bt_ctf_notif_iter_medium_ops medops,
                void *data, FILE *err_stream)
@@ -2337,7 +2284,6 @@ struct bt_ctf_notif_iter *bt_ctf_notif_iter_create(struct bt_ctf_trace *trace,
        };
 
        assert(trace);
-       assert(cc_prio_map);
        assert(medops.request_bytes);
        assert(medops.get_stream);
        notit = g_new0(struct bt_ctf_notif_iter, 1);
@@ -2356,7 +2302,6 @@ struct bt_ctf_notif_iter *bt_ctf_notif_iter_create(struct bt_ctf_trace *trace,
                PERR("Failed to initialize stream clock states\n");
                goto error;
        }
-       notit->cc_prio_map = bt_get(cc_prio_map);
        notit->meta.trace = bt_get(trace);
        notit->medium.medops = medops;
        notit->medium.max_request_sz = max_request_sz;
@@ -2400,7 +2345,6 @@ error:
 
 void bt_ctf_notif_iter_destroy(struct bt_ctf_notif_iter *notit)
 {
-       BT_PUT(notit->cc_prio_map);
        BT_PUT(notit->meta.trace);
        BT_PUT(notit->meta.stream_class);
        BT_PUT(notit->meta.event_class);
@@ -2432,6 +2376,7 @@ void bt_ctf_notif_iter_destroy(struct bt_ctf_notif_iter *notit)
 
 enum bt_ctf_notif_iter_status bt_ctf_notif_iter_get_next_notification(
                struct bt_ctf_notif_iter *notit,
+               struct bt_clock_class_priority_map *cc_prio_map,
                struct bt_notification **notification)
 {
        enum bt_ctf_notif_iter_status status = BT_CTF_NOTIF_ITER_STATUS_OK;
@@ -2441,6 +2386,10 @@ enum bt_ctf_notif_iter_status bt_ctf_notif_iter_get_next_notification(
 
        while (true) {
                status = handle_state(notit);
+               if (status == BT_CTF_NOTIF_ITER_STATUS_AGAIN) {
+                       PDBG("Medium operation reported \"try again later\"");
+                       goto end;
+               }
                if (status != BT_CTF_NOTIF_ITER_STATUS_OK) {
                        if (status == BT_CTF_NOTIF_ITER_STATUS_EOF) {
                                PDBG("Medium operation reported end of stream\n");
@@ -2461,7 +2410,7 @@ enum bt_ctf_notif_iter_status bt_ctf_notif_iter_get_next_notification(
                        goto end;
                case STATE_EMIT_NOTIF_EVENT:
                        PDBG("Emitting event notification\n");
-                       notify_event(notit, notification);
+                       notify_event(notit, cc_prio_map, notification);
                        if (!*notification) {
                                status = BT_CTF_NOTIF_ITER_STATUS_ERROR;
                        }
This page took 0.027414 seconds and 4 git commands to generate.