From 5d65beabea67cce0c6586f702d0962ffacedc59a Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 23 Aug 2018 19:03:54 -0400 Subject: [PATCH] Add a trace archive location accessor to the session API MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau --- src/bin/lttng-sessiond/session.c | 43 ++++++++++++++++++++++++++++++++ src/bin/lttng-sessiond/session.h | 3 +++ 2 files changed, 46 insertions(+) diff --git a/src/bin/lttng-sessiond/session.c b/src/bin/lttng-sessiond/session.c index 16431ca15..a5b9a4278 100644 --- a/src/bin/lttng-sessiond/session.c +++ b/src/bin/lttng-sessiond/session.c @@ -28,6 +28,7 @@ #include #include +#include #include "session.h" #include "utils.h" @@ -218,6 +219,48 @@ void session_get_net_consumer_ports(const struct ltt_session *session, *data_port = output->dst.net.data.port; } +/* + * Get the location of the latest trace archive produced by a rotation. + * + * The caller must hold the session lock. + */ +struct lttng_trace_archive_location *session_get_trace_archive_location( + struct ltt_session *session) +{ + struct lttng_trace_archive_location *location = NULL; + + if (session->rotation_state != LTTNG_ROTATION_STATE_COMPLETED) { + goto end; + } + + switch (session_get_consumer_destination_type(session)) { + case CONSUMER_DST_LOCAL: + location = lttng_trace_archive_location_local_create( + session->rotation_chunk.current_rotate_path); + break; + case CONSUMER_DST_NET: + { + const char *hostname; + uint16_t control_port, data_port; + + hostname = session_get_net_consumer_hostname(session); + session_get_net_consumer_ports(session, + &control_port, + &data_port); + location = lttng_trace_archive_location_relay_create( + hostname, + LTTNG_TRACE_ARCHIVE_LOCATION_RELAY_PROTOCOL_TYPE_TCP, + control_port, data_port, + session->rotation_chunk.current_rotate_path); + break; + } + default: + abort(); + } +end: + return location; +} + /* * Allocate the ltt_sessions_ht_by_id HT. * diff --git a/src/bin/lttng-sessiond/session.h b/src/bin/lttng-sessiond/session.h index 371b30d6b..abbf9ece0 100644 --- a/src/bin/lttng-sessiond/session.h +++ b/src/bin/lttng-sessiond/session.h @@ -24,6 +24,7 @@ #include #include +#include #include "snapshot.h" #include "trace-kernel.h" @@ -224,6 +225,8 @@ const char *session_get_net_consumer_hostname( void session_get_net_consumer_ports( const struct ltt_session *session, uint16_t *control_port, uint16_t *data_port); +struct lttng_trace_archive_location *session_get_trace_archive_location( + struct ltt_session *session); struct ltt_session *session_find_by_name(const char *name); struct ltt_session *session_find_by_id(uint64_t id); -- 2.34.1