X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbin%2Flttng-sessiond%2Fsession.c;h=38dbf6128c31639b668910ede62fc4a51f19d7c0;hb=92816cc33a1add3c8276839bd6335e17423577dd;hp=16431ca15ca19d3cd3260ee99e6a4c5163232d35;hpb=71e0a100af7369c2a56db35af7b864eeb5ca4f48;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/session.c b/src/bin/lttng-sessiond/session.c index 16431ca15..38dbf6128 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. * @@ -477,11 +520,12 @@ int session_create(char *name, uid_t uid, gid_t gid) goto error; } - new_session->rotate_pending = false; + new_session->rotation_pending_local = false; + new_session->rotation_pending_relay = false; new_session->rotation_state = LTTNG_ROTATION_STATE_NO_ROTATION; - new_session->rotate_pending_relay = false; - new_session->rotate_relay_pending_timer_enabled = false; - new_session->rotate_timer = false; + + new_session->rotation_pending_check_timer_enabled = false; + new_session->rotation_schedule_timer_enabled = false; /* Add new session to the session list */ session_lock_list();