#include "save.h"
#include "load-session-thread.h"
#include "syscall.h"
+#include "agent.h"
#define CONSUMERD_FILE "lttng-consumerd"
/* Load session thread information to operate. */
struct load_session_thread_data *load_info;
+/* Global hash tables */
+struct lttng_ht *agent_apps_ht_by_sock = NULL;
+
/*
* Whether sessiond is ready for commands/health check requests.
* NR_LTTNG_SESSIOND_READY must match the number of calls to
}
case LTTNG_DATA_PENDING:
{
- ret = cmd_data_pending(cmd_ctx->session);
+ int pending_ret;
+
+ /* 1 byte to return whether or not data is pending */
+ ret = setup_lttng_msg(cmd_ctx, 1);
+ if (ret < 0) {
+ goto setup_error;
+ }
+
+ pending_ret = cmd_data_pending(cmd_ctx->session);
+ /*
+ * FIXME
+ *
+ * This function may returns 0 or 1 to indicate whether or not
+ * there is data pending. In case of error, it should return an
+ * LTTNG_ERR code. However, some code paths may still return
+ * a nondescript error code, which we handle by returning an
+ * "unknown" error.
+ */
+ if (pending_ret == 0 || pending_ret == 1) {
+ ret = LTTNG_OK;
+ } else if (pending_ret < 0) {
+ ret = LTTNG_ERR_UNK;
+ goto setup_error;
+ } else {
+ ret = pending_ret;
+ goto setup_error;
+ }
+
+ *cmd_ctx->llm->payload = (uint8_t) pending_ret;
break;
}
case LTTNG_SNAPSHOT_ADD_OUTPUT:
health_code_update();
- DBG("Sending response (size: %d, retcode: %s)",
+ DBG("Sending response (size: %d, retcode: %s (%d))",
cmd_ctx->lttng_msg_size,
- lttng_strerror(-cmd_ctx->llm->ret_code));
+ lttng_strerror(-cmd_ctx->llm->ret_code),
+ cmd_ctx->llm->ret_code);
ret = send_unix_sock(sock, cmd_ctx->llm, cmd_ctx->lttng_msg_size);
if (ret < 0) {
ERR("Failed to send data back to client");