X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=1d4f9264eb0a57e4aedfa595767b1478b9402a4f;hp=b1e66e755bf0f621fb8c78f84a6d8c9043cedc55;hb=806e2684ce24d3772af37ee46c5f0500c7a0723f;hpb=ca22feea083301934d1c8511851c86fb008c0697 diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index b1e66e755..1d4f9264e 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -2334,6 +2334,47 @@ error: return ret; } +/* + * Command LTTNG_DATA_AVAILABLE returning 0 if the data is NOT ready to be read + * or else 1 if the data is available for trace analysis. + */ +int cmd_data_available(struct ltt_session *session) +{ + int ret; + struct ltt_kernel_session *ksess = session->kernel_session; + struct ltt_ust_session *usess = session->ust_session; + + assert(session); + + /* Session MUST be stopped to ask for data availability. */ + if (session->enabled) { + ret = LTTNG_ERR_SESSION_STARTED; + goto error; + } + + if (ksess && ksess->consumer) { + ret = consumer_is_data_available(ksess->id, ksess->consumer); + if (ret == 0) { + /* Data is still being extracted for the kernel. */ + goto error; + } + } + + if (usess && usess->consumer) { + ret = consumer_is_data_available(usess->id, usess->consumer); + if (ret == 0) { + /* Data is still being extracted for the kernel. */ + goto error; + } + } + + /* Data is ready to be read by a viewer */ + ret = 1; + +error: + return ret; +} + /* * Init command subsystem. */