X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Flttng-live%2Flttng-live.c;h=7b5eddbde167b71bac624e9b4671630bd1de33a3;hb=d9c39b0a4ad9517178899334c0ca89fd20901609;hp=af886143292a4ac3c47493d026d885672cf373d0;hpb=2ece7dd044d2f520c313eb967523843de5023e9e;p=babeltrace.git diff --git a/src/plugins/ctf/lttng-live/lttng-live.c b/src/plugins/ctf/lttng-live/lttng-live.c index af886143..7b5eddbd 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.c +++ b/src/plugins/ctf/lttng-live/lttng-live.c @@ -31,7 +31,7 @@ #define BT_COMP_LOG_SELF_COMP self_comp #define BT_LOG_OUTPUT_LEVEL log_level #define BT_LOG_TAG "PLUGIN/SRC.CTF.LTTNG-LIVE" -#include "plugins/comp-logging.h" +#include "logging/comp-logging.h" #include #include @@ -109,18 +109,17 @@ const char *print_state(struct lttng_live_stream_iterator *s) } while (0); BT_HIDDEN -bool lttng_live_graph_is_canceled(struct lttng_live_component *lttng_live) +bool lttng_live_graph_is_canceled(struct lttng_live_msg_iter *msg_iter) { - const bt_component *component; bool ret; - if (!lttng_live) { + if (!msg_iter) { ret = false; goto end; } - component = bt_self_component_as_component(lttng_live->self_comp); - ret = bt_component_graph_is_canceled(component); + ret = bt_self_message_iterator_is_interrupted( + msg_iter->self_msg_iter); end: return ret; @@ -259,7 +258,6 @@ end: static void lttng_live_destroy_session(struct lttng_live_session *session) { - struct lttng_live_component *live_comp; bt_logging_level log_level; bt_self_component *self_comp; @@ -272,9 +270,9 @@ void lttng_live_destroy_session(struct lttng_live_session *session) BT_COMP_LOGD("Destroy lttng live session"); if (session->id != -1ULL) { if (lttng_live_detach_session(session)) { - live_comp = session->lttng_live_msg_iter->lttng_live_comp; if (session->lttng_live_msg_iter && - !lttng_live_graph_is_canceled(live_comp)) { + !lttng_live_graph_is_canceled( + session->lttng_live_msg_iter)) { /* Old relayd cannot detach sessions. */ BT_COMP_LOGD("Unable to detach lttng live session %" PRIu64, session->id); @@ -442,7 +440,7 @@ enum lttng_live_iterator_status lttng_live_get_session( ret = lttng_live_attach_session(session); if (ret) { if (lttng_live_msg_iter && lttng_live_graph_is_canceled( - lttng_live_msg_iter->lttng_live_comp)) { + lttng_live_msg_iter)) { status = LTTNG_LIVE_ITERATOR_STATUS_AGAIN; } else { status = LTTNG_LIVE_ITERATOR_STATUS_ERROR; @@ -633,7 +631,6 @@ int live_get_msg_ts_ns(struct lttng_live_stream_iterator *stream_iter, const bt_clock_class *clock_class = NULL; const bt_clock_snapshot *clock_snapshot = NULL; int ret = 0; - bt_message_stream_activity_clock_snapshot_state sa_cs_state; bt_logging_level log_level = lttng_live_msg_iter->log_level; bt_self_component *self_comp = lttng_live_msg_iter->self_comp; @@ -690,32 +687,6 @@ int live_get_msg_ts_ns(struct lttng_live_stream_iterator *stream_iter, clock_snapshot = bt_message_discarded_packets_borrow_beginning_default_clock_snapshot_const( msg); break; - case BT_MESSAGE_TYPE_STREAM_ACTIVITY_BEGINNING: - clock_class = - bt_message_stream_activity_beginning_borrow_stream_class_default_clock_class_const( - msg); - BT_ASSERT(clock_class); - - sa_cs_state = bt_message_stream_activity_beginning_borrow_default_clock_snapshot_const( - msg, &clock_snapshot); - if (sa_cs_state != BT_MESSAGE_STREAM_ACTIVITY_CLOCK_SNAPSHOT_STATE_KNOWN) { - goto no_clock_snapshot; - } - - break; - case BT_MESSAGE_TYPE_STREAM_ACTIVITY_END: - clock_class = - bt_message_stream_activity_end_borrow_stream_class_default_clock_class_const( - msg); - BT_ASSERT(clock_class); - - sa_cs_state = bt_message_stream_activity_end_borrow_default_clock_snapshot_const( - msg, &clock_snapshot); - if (sa_cs_state != BT_MESSAGE_STREAM_ACTIVITY_CLOCK_SNAPSHOT_STATE_KNOWN) { - goto no_clock_snapshot; - } - - break; case BT_MESSAGE_TYPE_MESSAGE_ITERATOR_INACTIVITY: clock_snapshot = bt_message_message_iterator_inactivity_borrow_default_clock_snapshot_const( @@ -740,12 +711,6 @@ int live_get_msg_ts_ns(struct lttng_live_stream_iterator *stream_iter, goto end; -no_clock_snapshot: - BT_COMP_LOGD_STR("Message's default clock snapshot is missing: " - "using the last message timestamp."); - *ts_ns = last_msg_ts_ns; - goto end; - error: ret = -1; @@ -901,7 +866,7 @@ retry: live_status = lttng_live_iterator_next_handle_one_quiescent_stream( lttng_live_msg_iter, stream_iter, curr_msg); if (live_status != LTTNG_LIVE_ITERATOR_STATUS_OK) { - BT_ASSERT(*curr_msg == NULL); + BT_ASSERT(!*curr_msg); goto end; } if (*curr_msg) { @@ -910,7 +875,7 @@ retry: live_status = lttng_live_iterator_next_handle_one_active_data_stream( lttng_live_msg_iter, stream_iter, curr_msg); if (live_status != LTTNG_LIVE_ITERATOR_STATUS_OK) { - BT_ASSERT(*curr_msg == NULL); + BT_ASSERT(!*curr_msg); } end: @@ -1139,12 +1104,12 @@ void put_messages(bt_message_array_const msgs, uint64_t count) } BT_HIDDEN -bt_self_message_iterator_status lttng_live_msg_iter_next( +bt_component_class_message_iterator_next_method_status lttng_live_msg_iter_next( bt_self_message_iterator *self_msg_it, bt_message_array_const msgs, uint64_t capacity, uint64_t *count) { - bt_self_message_iterator_status status; + bt_component_class_message_iterator_next_method_status status; struct lttng_live_msg_iter *lttng_live_msg_iter = bt_self_message_iterator_get_data(self_msg_it); struct lttng_live_component *lttng_live = @@ -1170,7 +1135,7 @@ bt_self_message_iterator_status lttng_live_msg_iter_next( if (lttng_live_msg_iter->sessions->len == 0) { if (lttng_live->params.sess_not_found_act != SESSION_NOT_FOUND_ACTION_CONTINUE) { - status = BT_SELF_MESSAGE_ITERATOR_STATUS_END; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END; goto no_session; } else { /* @@ -1179,7 +1144,7 @@ bt_self_message_iterator_status lttng_live_msg_iter_next( * requested session name. */ if (lttng_live_create_viewer_session(lttng_live_msg_iter)) { - status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR; goto no_session; } } @@ -1303,21 +1268,21 @@ end: * now. On the next call we return again if there are * still no new message to send. */ - status = BT_SELF_MESSAGE_ITERATOR_STATUS_OK; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK; } else { - status = BT_SELF_MESSAGE_ITERATOR_STATUS_AGAIN; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_AGAIN; } break; case LTTNG_LIVE_ITERATOR_STATUS_END: - status = BT_SELF_MESSAGE_ITERATOR_STATUS_END; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END; break; case LTTNG_LIVE_ITERATOR_STATUS_NOMEM: - status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR; break; case LTTNG_LIVE_ITERATOR_STATUS_ERROR: case LTTNG_LIVE_ITERATOR_STATUS_INVAL: case LTTNG_LIVE_ITERATOR_STATUS_UNSUPPORTED: - status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR; + status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR; /* Put all existing messages on error. */ put_messages(msgs, *count); break; @@ -1330,15 +1295,15 @@ no_session: } BT_HIDDEN -bt_self_message_iterator_status lttng_live_msg_iter_init( +bt_component_class_message_iterator_init_method_status lttng_live_msg_iter_init( bt_self_message_iterator *self_msg_it, bt_self_component_source *self_comp_src, bt_self_component_port_output *self_port) { - bt_self_message_iterator_status ret = - BT_SELF_MESSAGE_ITERATOR_STATUS_OK; + bt_component_class_message_iterator_init_method_status ret = + BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK; bt_self_component *self_comp = - bt_self_component_source_as_self_component(self_comp_src); + bt_self_component_source_as_self_component(self_comp_src); struct lttng_live_component *lttng_live; struct lttng_live_msg_iter *lttng_live_msg_iter; bt_logging_level log_level; @@ -1355,7 +1320,7 @@ bt_self_message_iterator_status lttng_live_msg_iter_init( lttng_live_msg_iter = g_new0(struct lttng_live_msg_iter, 1); if (!lttng_live_msg_iter) { - ret = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR; + ret = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_ERROR; goto end; } @@ -1414,17 +1379,19 @@ bt_self_message_iterator_status lttng_live_msg_iter_init( goto end; error: - ret = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR; + ret = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_ERROR; lttng_live_msg_iter_destroy(lttng_live_msg_iter); end: return ret; } static -bt_query_status lttng_live_query_list_sessions(const bt_value *params, - const bt_value **result, bt_logging_level log_level) +bt_component_class_query_method_status lttng_live_query_list_sessions( + const bt_value *params, const bt_value **result, + bt_logging_level log_level) { - bt_query_status status = BT_QUERY_STATUS_OK; + bt_component_class_query_method_status status = + BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK; const bt_value *url_value = NULL; const char *url; struct live_viewer_connection *viewer_connection = NULL; @@ -1432,15 +1399,15 @@ bt_query_status lttng_live_query_list_sessions(const bt_value *params, url_value = bt_value_map_borrow_entry_value_const(params, URL_PARAM); if (!url_value) { - BT_COMP_LOGW("Mandatory `%s` parameter missing", URL_PARAM); - status = BT_QUERY_STATUS_INVALID_PARAMS; + BT_COMP_LOGE("Mandatory `%s` parameter missing", URL_PARAM); + status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_ERROR; goto error; } if (!bt_value_is_string(url_value)) { - BT_COMP_LOGW("`%s` parameter is required to be a string value", + BT_COMP_LOGE("`%s` parameter is required to be a string value", URL_PARAM); - status = BT_QUERY_STATUS_INVALID_PARAMS; + status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_ERROR; goto error; } @@ -1453,7 +1420,7 @@ bt_query_status lttng_live_query_list_sessions(const bt_value *params, status = live_viewer_connection_list_sessions(viewer_connection, result); - if (status != BT_QUERY_STATUS_OK) { + if (status != BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK) { goto error; } @@ -1463,7 +1430,7 @@ error: BT_VALUE_PUT_REF_AND_RESET(*result); if (status >= 0) { - status = BT_QUERY_STATUS_ERROR; + status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_ERROR; } end: @@ -1474,20 +1441,22 @@ end: } BT_HIDDEN -bt_query_status lttng_live_query(bt_self_component_class_source *comp_class, +bt_component_class_query_method_status lttng_live_query( + bt_self_component_class_source *comp_class, const bt_query_executor *query_exec, const char *object, const bt_value *params, bt_logging_level log_level, const bt_value **result) { - bt_query_status status = BT_QUERY_STATUS_OK; + bt_component_class_query_method_status status = + BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK; bt_self_component *self_comp = NULL; if (strcmp(object, "sessions") == 0) { status = lttng_live_query_list_sessions(params, result, log_level); } else { - BT_COMP_LOGW("Unknown query object `%s`", object); - status = BT_QUERY_STATUS_INVALID_OBJECT; + BT_COMP_LOGI("Unknown query object `%s`", object); + status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_UNKNOWN_OBJECT; goto end; } @@ -1599,32 +1568,36 @@ end: } BT_HIDDEN -bt_self_component_status lttng_live_component_init( +bt_component_class_init_method_status lttng_live_component_init( bt_self_component_source *self_comp_src, const bt_value *params, __attribute__((unused)) void *init_method_data) { struct lttng_live_component *lttng_live; - bt_self_component_status ret = BT_SELF_COMPONENT_STATUS_OK; + bt_component_class_init_method_status ret = + BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK; bt_self_component *self_comp = bt_self_component_source_as_self_component(self_comp_src); bt_logging_level log_level = bt_component_get_logging_level( bt_self_component_as_component(self_comp)); + bt_self_component_add_port_status add_port_status; lttng_live = lttng_live_component_create(params, log_level, self_comp); if (!lttng_live) { - ret = BT_SELF_COMPONENT_STATUS_NOMEM; + ret = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR; goto error; } - if (lttng_live_graph_is_canceled(lttng_live)) { - ret = BT_SELF_COMPONENT_STATUS_END; + add_port_status = bt_self_component_source_add_output_port( + self_comp_src, "out", NULL, NULL); + switch (add_port_status) { + case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR: + ret = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR; goto error; - } - - ret = bt_self_component_source_add_output_port(self_comp_src, "out", - NULL, NULL); - if (ret != BT_SELF_COMPONENT_STATUS_OK) { + case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR: + ret = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR; goto error; + default: + break; } bt_self_component_set_data(self_comp, lttng_live);