#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 <glib.h>
#include <inttypes.h>
} 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;
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;
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);
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;
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) {
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:
lttng_live_msg_iter->viewer_connection =
live_viewer_connection_create(lttng_live->params.url->str, false,
- lttng_live_msg_iter);
+ lttng_live_msg_iter, log_level);
if (!lttng_live_msg_iter->viewer_connection) {
goto error;
}
SESS_NOT_FOUND_ACTION_END_STR,
lttng_live->params.url->str);
break;
+ case SESSION_NOT_FOUND_ACTION_UNKNOWN:
+ default:
+ /* Fallthrough */
+ BT_COMP_LOGE("Unknown action for session not found"
+ "error. Fail the message iterator"
+ "initialization because of %s=\"%s\" "
+ "component parameter: url =\"%s\"",
+ SESS_NOT_FOUND_ACTION_PARAM,
+ SESS_NOT_FOUND_ACTION_FAIL_STR,
+ lttng_live->params.url->str);
+ break;
}
}
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_COMPONENT_CLASS_QUERY_METHOD_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_COMPONENT_CLASS_QUERY_METHOD_STATUS_INVALID_PARAMS;
+ status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_ERROR;
goto error;
}
url = bt_value_string_get(url_value);
- viewer_connection = live_viewer_connection_create(url, true, NULL);
+ viewer_connection = live_viewer_connection_create(url, true, NULL,
+ log_level);
if (!viewer_connection) {
goto error;
}
BT_HIDDEN
bt_component_class_query_method_status lttng_live_query(
bt_self_component_class_source *comp_class,
- const bt_query_executor *query_exec,
+ bt_private_query_executor *priv_query_exec,
const char *object, const bt_value *params,
- bt_logging_level log_level, const bt_value **result)
+ const bt_value **result)
{
bt_component_class_query_method_status status =
BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_OK;
bt_self_component *self_comp = NULL;
+ bt_logging_level log_level = bt_query_executor_get_logging_level(
+ bt_private_query_executor_as_query_executor_const(
+ priv_query_exec));
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_COMPONENT_CLASS_QUERY_METHOD_STATUS_INVALID_OBJECT;
+ BT_COMP_LOGI("Unknown query object `%s`", object);
+ status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_UNKNOWN_OBJECT;
goto end;
}
} else if (strcmp(no_session_act_str, SESS_NOT_FOUND_ACTION_END_STR) == 0) {
action = SESSION_NOT_FOUND_ACTION_END;
} else {
- action = -1;
+ action = SESSION_NOT_FOUND_ACTION_UNKNOWN;
}
return action;
if (value && bt_value_is_string(value)) {
lttng_live->params.sess_not_found_act =
parse_session_not_found_action_param(value);
- if (lttng_live->params.sess_not_found_act == -1) {
+ if (lttng_live->params.sess_not_found_act == SESSION_NOT_FOUND_ACTION_UNKNOWN) {
BT_COMP_LOGE("Unexpected value for `%s` parameter: "
"value=\"%s\"", SESS_NOT_FOUND_ACTION_PARAM,
bt_value_string_get(value));
goto error;
}
- if (lttng_live_graph_is_canceled(lttng_live)) {
- ret = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
- goto error;
- }
-
add_port_status = bt_self_component_source_add_output_port(
self_comp_src, "out", NULL, NULL);
switch (add_port_status) {