X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Flttng-live%2Fviewer-connection.c;h=53358131fe9b9f0a707b0f27c4c1588ecd050627;hb=0f1979c3efe2c5b253edb5944d2ba561347ece2e;hp=c7347020f30baf869583f36c7005c4e5e8504df3;hpb=550004b427608c43666ed59b552c37ea900ad6f8;p=babeltrace.git diff --git a/src/plugins/ctf/lttng-live/viewer-connection.c b/src/plugins/ctf/lttng-live/viewer-connection.c index c7347020..53358131 100644 --- a/src/plugins/ctf/lttng-live/viewer-connection.c +++ b/src/plugins/ctf/lttng-live/viewer-connection.c @@ -117,15 +117,14 @@ int parse_url(struct live_viewer_connection *viewer_connection) goto end; } - lttng_live_url_parts = bt_common_parse_lttng_live_url(path, - error_buf, sizeof(error_buf)); + lttng_live_url_parts = bt_common_parse_lttng_live_url(path, error_buf, + sizeof(error_buf)); if (!lttng_live_url_parts.proto) { BT_COMP_LOGW("Invalid LTTng live URL format: %s", error_buf); goto end; } - viewer_connection->relay_hostname = - lttng_live_url_parts.hostname; + viewer_connection->relay_hostname = lttng_live_url_parts.hostname; lttng_live_url_parts.hostname = NULL; if (lttng_live_url_parts.port >= 0) { @@ -134,26 +133,23 @@ int parse_url(struct live_viewer_connection *viewer_connection) viewer_connection->port = LTTNG_DEFAULT_NETWORK_VIEWER_PORT; } - viewer_connection->target_hostname = - lttng_live_url_parts.target_hostname; + viewer_connection->target_hostname = lttng_live_url_parts.target_hostname; lttng_live_url_parts.target_hostname = NULL; if (lttng_live_url_parts.session_name) { - viewer_connection->session_name = - lttng_live_url_parts.session_name; + viewer_connection->session_name = lttng_live_url_parts.session_name; lttng_live_url_parts.session_name = NULL; } BT_COMP_LOGI("Connecting to hostname : %s, port : %d, " - "target hostname : %s, session name : %s, " - "proto : %s", - viewer_connection->relay_hostname->str, - viewer_connection->port, - !viewer_connection->target_hostname ? - "" : viewer_connection->target_hostname->str, - !viewer_connection->session_name ? - "" : viewer_connection->session_name->str, - lttng_live_url_parts.proto->str); + "target hostname : %s, session name : %s, proto : %s", + viewer_connection->relay_hostname->str, + viewer_connection->port, + !viewer_connection->target_hostname ? + "" : viewer_connection->target_hostname->str, + !viewer_connection->session_name ? + "" : viewer_connection->session_name->str, + lttng_live_url_parts.proto->str); ret = 0; end: @@ -308,15 +304,14 @@ int list_update_session(bt_value *results, const struct lttng_viewer_session *session, bool *_found, struct live_viewer_connection *viewer_connection) { - int ret = 0; + int i, len, ret = 0; bt_value *map = NULL; bt_value *hostname = NULL; bt_value *session_name = NULL; bt_value *btval = NULL; - int i, len; bool found = false; - len = bt_value_array_get_size(results); + len = bt_value_array_get_length(results); if (len < 0) { BT_COMP_LOGE_STR("Error getting size of array."); ret = -1; @@ -361,10 +356,10 @@ int list_update_session(bt_value *results, ret = -1; goto end; } - val = bt_value_integer_signed_get(btval); + val = bt_value_integer_unsigned_get(btval); /* sum */ val += streams; - bt_value_integer_signed_set(btval, val); + bt_value_integer_unsigned_set(btval, val); btval = bt_value_map_borrow_entry_value(map, "client-count"); if (!btval) { @@ -372,10 +367,10 @@ int list_update_session(bt_value *results, ret = -1; goto end; } - val = bt_value_integer_signed_get(btval); + val = bt_value_integer_unsigned_get(btval); /* max */ val = bt_max_t(int64_t, clients, val); - bt_value_integer_signed_set(btval, val); + bt_value_integer_unsigned_set(btval, val); } if (found) { @@ -469,7 +464,7 @@ int list_append_session(bt_value *results, { uint32_t live_timer = be32toh(session->live_timer); - insert_status = bt_value_map_insert_signed_integer_entry( + insert_status = bt_value_map_insert_unsigned_integer_entry( map, "timer-us", live_timer); if (insert_status != BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK) { BT_COMP_LOGE_STR("Error inserting \"timer-us\" entry."); @@ -485,7 +480,7 @@ int list_append_session(bt_value *results, { uint32_t streams = be32toh(session->streams); - insert_status = bt_value_map_insert_signed_integer_entry(map, + insert_status = bt_value_map_insert_unsigned_integer_entry(map, "stream-count", streams); if (insert_status != BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK) { BT_COMP_LOGE_STR("Error inserting \"stream-count\" entry."); @@ -501,7 +496,7 @@ int list_append_session(bt_value *results, { uint32_t clients = be32toh(session->clients); - insert_status = bt_value_map_insert_signed_integer_entry(map, + insert_status = bt_value_map_insert_unsigned_integer_entry(map, "client-count", clients); if (insert_status != BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK) { BT_COMP_LOGE_STR("Error inserting \"client-count\" entry."); @@ -573,10 +568,6 @@ bt_component_class_query_method_status live_viewer_connection_list_sessions( uint32_t i, sessions_count; ssize_t ret_len; - if (lttng_live_handshake(viewer_connection)) { - goto error; - } - result = bt_value_array_create(); if (!result) { BT_COMP_LOGE("Error creating array"); @@ -770,9 +761,9 @@ int receive_streams(struct lttng_live_session *session, ssize_t ret_len; uint32_t i; struct lttng_live_msg_iter *lttng_live_msg_iter = - session->lttng_live_msg_iter; + session->lttng_live_msg_iter; struct live_viewer_connection *viewer_connection = - lttng_live_msg_iter->viewer_connection; + lttng_live_msg_iter->viewer_connection; BT_COMP_LOGI("Getting %" PRIu32 " new streams:", stream_count); for (i = 0; i < stream_count; i++) { @@ -798,8 +789,7 @@ int receive_streams(struct lttng_live_session *session, if (stream.metadata_flag) { BT_COMP_LOGI(" metadata stream %" PRIu64 " : %s/%s", - stream_id, stream.path_name, - stream.channel_name); + stream_id, stream.path_name, stream.channel_name); if (lttng_live_metadata_create_stream(session, ctf_trace_id, stream_id, stream.path_name)) { @@ -810,8 +800,7 @@ int receive_streams(struct lttng_live_session *session, session->lazy_stream_msg_init = true; } else { BT_COMP_LOGI(" stream %" PRIu64 " : %s/%s", - stream_id, stream.path_name, - stream.channel_name); + stream_id, stream.path_name, stream.channel_name); live_stream = lttng_live_stream_iterator_create(session, ctf_trace_id, stream_id); if (!live_stream) { @@ -832,14 +821,15 @@ int lttng_live_attach_session(struct lttng_live_session *session) struct lttng_viewer_cmd cmd; struct lttng_viewer_attach_session_request rq; struct lttng_viewer_attach_session_response rp; - ssize_t ret_len; - struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; + struct lttng_live_msg_iter *lttng_live_msg_iter = + session->lttng_live_msg_iter; struct live_viewer_connection *viewer_connection = - lttng_live_msg_iter->viewer_connection; + lttng_live_msg_iter->viewer_connection; uint64_t session_id = session->id; uint32_t streams_count; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; + ssize_t ret_len; cmd.cmd = htobe32(LTTNG_VIEWER_ATTACH_SESSION); cmd.data_size = htobe64((uint64_t) sizeof(rq)); @@ -918,9 +908,10 @@ int lttng_live_detach_session(struct lttng_live_session *session) struct lttng_viewer_detach_session_request rq; struct lttng_viewer_detach_session_response rp; ssize_t ret_len; - struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; + struct lttng_live_msg_iter *lttng_live_msg_iter = + session->lttng_live_msg_iter; struct live_viewer_connection *viewer_connection = - lttng_live_msg_iter->viewer_connection; + lttng_live_msg_iter->viewer_connection; uint64_t session_id = session->id; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -995,10 +986,11 @@ ssize_t lttng_live_get_one_metadata_packet(struct lttng_live_trace *trace, char *data = NULL; ssize_t ret_len; struct lttng_live_session *session = trace->session; - struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; + struct lttng_live_msg_iter *lttng_live_msg_iter = + session->lttng_live_msg_iter; struct lttng_live_metadata *metadata = trace->metadata; struct live_viewer_connection *viewer_connection = - lttng_live_msg_iter->viewer_connection; + lttng_live_msg_iter->viewer_connection; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -1115,16 +1107,15 @@ enum lttng_live_iterator_status lttng_live_get_next_index( { struct lttng_viewer_cmd cmd; struct lttng_viewer_get_next_index rq; - ssize_t ret_len; struct lttng_viewer_index rp; - uint32_t flags, status; - enum lttng_live_iterator_status retstatus = - LTTNG_LIVE_ITERATOR_STATUS_OK; + enum lttng_live_iterator_status retstatus = LTTNG_LIVE_ITERATOR_STATUS_OK; struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; struct lttng_live_trace *trace = stream->trace; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; + uint32_t flags, status; + ssize_t ret_len; cmd.cmd = htobe32(LTTNG_VIEWER_GET_NEXT_INDEX); cmd.data_size = htobe64((uint64_t) sizeof(rq)); @@ -1221,6 +1212,7 @@ enum lttng_live_iterator_status lttng_live_get_next_index( index->offset = EOF; retstatus = LTTNG_LIVE_ITERATOR_STATUS_END; stream->state = LTTNG_LIVE_STREAM_EOF; + stream->has_stream_hung_up = true; break; case LTTNG_VIEWER_INDEX_ERR: BT_COMP_LOGE("get_next_index: error"); @@ -1252,16 +1244,16 @@ enum bt_msg_iter_medium_status lttng_live_get_stream_bytes( uint64_t offset, uint64_t req_len, uint64_t *recv_len) { enum bt_msg_iter_medium_status retstatus = BT_MSG_ITER_MEDIUM_STATUS_OK; + struct lttng_viewer_trace_packet rp; struct lttng_viewer_cmd cmd; struct lttng_viewer_get_packet rq; - struct lttng_viewer_trace_packet rp; - ssize_t ret_len; - uint32_t flags, status; struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; struct lttng_live_trace *trace = stream->trace; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; + uint32_t flags, status; + ssize_t ret_len; BT_COMP_LOGD("lttng_live_get_stream_bytes: offset=%" PRIu64 ", req_len=%" PRIu64, offset, req_len); @@ -1380,7 +1372,6 @@ enum lttng_live_iterator_status lttng_live_get_new_streams( struct lttng_viewer_cmd cmd; struct lttng_viewer_new_streams_request rq; struct lttng_viewer_new_streams_response rp; - ssize_t ret_len; struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; struct live_viewer_connection *viewer_connection = @@ -1388,6 +1379,7 @@ enum lttng_live_iterator_status lttng_live_get_new_streams( uint32_t streams_count; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; + ssize_t ret_len; if (!session->new_streams_needed) { return LTTNG_LIVE_ITERATOR_STATUS_OK; @@ -1503,7 +1495,10 @@ struct live_viewer_connection *live_viewer_connection_create( error_report: BT_COMP_LOGW("Failure to establish connection to url \"%s\"", url); error: - g_free(viewer_connection); + if (viewer_connection) { + live_viewer_connection_destroy(viewer_connection); + } + return NULL; } @@ -1513,7 +1508,9 @@ void live_viewer_connection_destroy( { BT_COMP_LOGI("Closing connection to url \"%s\"", viewer_connection->url->str); lttng_live_disconnect_viewer(viewer_connection); - g_string_free(viewer_connection->url, true); + if (viewer_connection->url) { + g_string_free(viewer_connection->url, true); + } if (viewer_connection->relay_hostname) { g_string_free(viewer_connection->relay_hostname, true); }