#include <common/common.h>
#include <common/defaults.h>
#include <common/sessiond-comm/relayd.h>
-#include <common/index/lttng-index.h>
+#include <common/index/ctf-index.h>
#include "relayd.h"
case 2:
case 3:
ret = relayd_create_session_2_1(rsock, session_id);
+ break;
case 4:
default:
ret = relayd_create_session_2_4(rsock, session_id, session_name,
hostname, session_live_timer, snapshot);
+ break;
}
if (ret < 0) {
return ret;
}
+/*
+ * Inform the relay that all the streams for the current channel has been sent.
+ *
+ * On success return 0 else return ret_code negative value.
+ */
+int relayd_streams_sent(struct lttcomm_relayd_sock *rsock)
+{
+ int ret;
+ struct lttcomm_relayd_generic_reply reply;
+
+ /* Code flow error. Safety net. */
+ assert(rsock);
+
+ DBG("Relayd sending streams sent.");
+
+ /* This feature was introduced in 2.4, ignore it for earlier versions. */
+ if (rsock->minor < 4) {
+ ret = 0;
+ goto end;
+ }
+
+ /* Send command */
+ ret = send_command(rsock, RELAYD_STREAMS_SENT, NULL, 0, 0);
+ if (ret < 0) {
+ goto error;
+ }
+
+ /* Waiting for reply */
+ ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
+ if (ret < 0) {
+ goto error;
+ }
+
+ /* Back to host bytes order. */
+ reply.ret_code = be32toh(reply.ret_code);
+
+ /* Return session id or negative ret code. */
+ if (reply.ret_code != LTTNG_OK) {
+ ret = -1;
+ ERR("Relayd streams sent replied error %d", reply.ret_code);
+ goto error;
+ } else {
+ /* Success */
+ ret = 0;
+ }
+
+ DBG("Relayd streams sent success");
+
+error:
+end:
+ return ret;
+}
+
/*
* Check version numbers on the relayd.
* If major versions are compatible, we assign minor_to_use to the
int relayd_end_data_pending(struct lttcomm_relayd_sock *rsock, uint64_t id,
unsigned int *is_data_inflight)
{
- int ret;
+ int ret, recv_ret;
struct lttcomm_relayd_end_data_pending msg;
struct lttcomm_relayd_generic_reply reply;
goto error;
}
- reply.ret_code = be32toh(reply.ret_code);
- if (reply.ret_code < 0) {
- ret = reply.ret_code;
+ recv_ret = be32toh(reply.ret_code);
+ if (recv_ret < 0) {
+ ret = recv_ret;
goto error;
}
- *is_data_inflight = reply.ret_code;
+ *is_data_inflight = recv_ret;
- DBG("Relayd end data pending is data inflight: %d", reply.ret_code);
+ DBG("Relayd end data pending is data inflight: %d", recv_ret);
return 0;
* Send index to the relayd.
*/
int relayd_send_index(struct lttcomm_relayd_sock *rsock,
- struct lttng_packet_index *index, uint64_t relay_stream_id,
+ struct ctf_packet_index *index, uint64_t relay_stream_id,
uint64_t net_seq_num)
{
int ret;