X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Flttng-live%2Fviewer-connection.cpp;h=66605b10022cc66ceeb1cb352c357b52a0624aa3;hb=d721bef811f32354df7dbf0a673e4f88329e0fc0;hp=42faae3b4cb2b3eb4f82088e028eb7a030fc89d5;hpb=277bcb7fc46fee9748f69b7817940b62b898c7fb;p=babeltrace.git diff --git a/src/plugins/ctf/lttng-live/viewer-connection.cpp b/src/plugins/ctf/lttng-live/viewer-connection.cpp index 42faae3b..66605b10 100644 --- a/src/plugins/ctf/lttng-live/viewer-connection.cpp +++ b/src/plugins/ctf/lttng-live/viewer-connection.cpp @@ -13,6 +13,7 @@ #include "common/common.h" #include "compat/endian.h" /* IWYU pragma: keep */ +#include "cpp-common/bt2s/make-unique.hpp" #include "data-stream.hpp" #include "lttng-live.hpp" @@ -753,7 +754,7 @@ lttng_live_query_session_ids(struct lttng_live_msg_iter *lttng_live_msg_iter) uint32_t i, sessions_count; uint64_t session_id; enum lttng_live_viewer_status status; - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); BT_CPPLOGD_SPEC(viewer_connection->logger, "Asking the relay daemon for the list of sessions: cmd={}", @@ -817,7 +818,7 @@ lttng_live_create_viewer_session(struct lttng_live_msg_iter *lttng_live_msg_iter struct lttng_viewer_cmd cmd; struct lttng_viewer_create_session_response resp; enum lttng_live_viewer_status status; - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); BT_CPPLOGD_SPEC(viewer_connection->logger, "Creating a viewer session: cmd={}", LTTNG_VIEWER_CREATE_SESSION); @@ -864,7 +865,7 @@ static enum lttng_live_viewer_status receive_streams(struct lttng_live_session * uint32_t i; struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; enum lttng_live_viewer_status status; - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); BT_CPPLOGI_SPEC(viewer_connection->logger, "Getting {} new streams", stream_count); for (i = 0; i < stream_count; i++) { @@ -919,7 +920,7 @@ enum lttng_live_viewer_status lttng_live_session_attach(struct lttng_live_sessio struct lttng_viewer_attach_session_request rq; struct lttng_viewer_attach_session_response rp; 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; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); uint64_t session_id = session->id; uint32_t streams_count; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); @@ -1015,7 +1016,7 @@ enum lttng_live_viewer_status lttng_live_session_detach(struct lttng_live_sessio struct lttng_viewer_detach_session_request rq; struct lttng_viewer_detach_session_response rp; 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; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); uint64_t session_id = session->id; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -1097,7 +1098,7 @@ lttng_live_get_one_metadata_packet(struct lttng_live_trace *trace, std::vectorsession; struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; struct lttng_live_metadata *metadata = trace->metadata.get(); - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -1234,7 +1235,7 @@ lttng_live_get_next_index(struct lttng_live_msg_iter *lttng_live_msg_iter, enum lttng_live_viewer_status viewer_status; struct lttng_viewer_index rp; enum lttng_live_iterator_status status; - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); struct lttng_live_trace *trace = stream->trace; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -1373,7 +1374,7 @@ lttng_live_get_stream_bytes(struct lttng_live_msg_iter *lttng_live_msg_iter, struct lttng_viewer_trace_packet rp; struct lttng_viewer_cmd cmd; struct lttng_viewer_get_packet rq; - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); struct lttng_live_trace *trace = stream->trace; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -1500,7 +1501,7 @@ lttng_live_session_get_new_streams(struct lttng_live_session *session, struct lttng_viewer_new_streams_response rp; struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; enum lttng_live_viewer_status viewer_status; - struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; + live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection.get(); uint32_t streams_count; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; @@ -1582,18 +1583,16 @@ end: return status; } -enum lttng_live_viewer_status live_viewer_connection_create( - const char *url, bool in_query, struct lttng_live_msg_iter *lttng_live_msg_iter, - const bt2c::Logger& parentLogger, struct live_viewer_connection **viewer) +enum lttng_live_viewer_status +live_viewer_connection_create(const char *url, bool in_query, + struct lttng_live_msg_iter *lttng_live_msg_iter, + const bt2c::Logger& parentLogger, live_viewer_connection::UP& viewer) { - enum lttng_live_viewer_status status; - - live_viewer_connection *viewer_connection = new live_viewer_connection {parentLogger}; + auto viewer_connection = bt2s::make_unique(parentLogger); if (bt_socket_init(viewer_connection->logger) != 0) { BT_CPPLOGE_APPEND_CAUSE_SPEC(viewer_connection->logger, "Failed to init socket"); - status = LTTNG_LIVE_VIEWER_STATUS_ERROR; - goto error; + return LTTNG_LIVE_VIEWER_STATUS_ERROR; } viewer_connection->control_sock = BT_INVALID_SOCKET; @@ -1603,7 +1602,8 @@ enum lttng_live_viewer_status live_viewer_connection_create( viewer_connection->url = url; BT_CPPLOGD_SPEC(viewer_connection->logger, "Establishing connection to url \"{}\"...", url); - status = lttng_live_connect_viewer(viewer_connection); + const auto status = lttng_live_connect_viewer(viewer_connection.get()); + /* * Only print error and append cause in case of error. not in case of * interruption. @@ -1613,21 +1613,14 @@ enum lttng_live_viewer_status live_viewer_connection_create( "Failed to establish connection: " "url=\"{}\"", url); - goto error; + return status; } else if (status == LTTNG_LIVE_VIEWER_STATUS_INTERRUPTED) { - goto error; + return status; } BT_CPPLOGD_SPEC(viewer_connection->logger, "Connection to url \"{}\" is established", url); - *viewer = viewer_connection; - status = LTTNG_LIVE_VIEWER_STATUS_OK; - goto end; - -error: - delete viewer_connection; - -end: - return status; + viewer = std::move(viewer_connection); + return LTTNG_LIVE_VIEWER_STATUS_OK; } live_viewer_connection::~live_viewer_connection()