From 65beb5ffdbe6e17dbd0268aad3c32b02322cd9ad Mon Sep 17 00:00:00 2001 From: David Goulet Date: Mon, 18 Jul 2011 10:57:49 -0400 Subject: [PATCH] Remove connect/disconnect sessiond from lttng API Those actions are made internally when a command to the session daemon is done so no need for them to be public. Move code around to make things clearer and fit static declaration. Signed-off-by: David Goulet --- include/lttng/lttng.h | 4 - liblttngctl/liblttngctl.c | 219 ++++++++++++++++++-------------------- 2 files changed, 106 insertions(+), 117 deletions(-) diff --git a/include/lttng/lttng.h b/include/lttng/lttng.h index ac7c43504..687a898a1 100644 --- a/include/lttng/lttng.h +++ b/include/lttng/lttng.h @@ -159,14 +159,10 @@ struct lttng_session { /* * Session daemon control */ -extern int lttng_connect_sessiond(void); - extern int lttng_create_session(char *name, char *path); extern int lttng_destroy_session(char *name); -extern int lttng_disconnect_sessiond(void); - /* * Return a "lttng_session" array. Caller must free(3) the returned data. */ diff --git a/liblttngctl/liblttngctl.c b/liblttngctl/liblttngctl.c index e05496a94..c851ce6ad 100644 --- a/liblttngctl/liblttngctl.c +++ b/liblttngctl/liblttngctl.c @@ -89,70 +89,9 @@ end: } /* - * ask_sessiond - * - * Ask the session daemon a specific command and put the data into buf. - * - * Return size of data (only payload, not header). - */ -static int ask_sessiond(enum lttcomm_sessiond_command lct, void **buf) -{ - int ret; - size_t size; - void *data = NULL; - - ret = lttng_connect_sessiond(); - if (ret < 0) { - goto end; - } - - lsm.cmd_type = lct; - - /* Send command to session daemon */ - ret = send_data_sessiond(); - if (ret < 0) { - goto end; - } - - /* Get header from data transmission */ - ret = recv_data_sessiond(&llm, sizeof(llm)); - if (ret < 0) { - goto end; - } - - /* Check error code if OK */ - if (llm.ret_code != LTTCOMM_OK) { - ret = -llm.ret_code; - goto end; - } - - size = llm.data_size; - if (size == 0) { - goto end; - } - - data = (void*) malloc(size); - - /* Get payload data */ - ret = recv_data_sessiond(data, size); - if (ret < 0) { - free(data); - goto end; - } - - *buf = data; - ret = size; - -end: - lttng_disconnect_sessiond(); - return ret; -} - -/* - * check_tracing_group - * * Check if the specified group name exist. - * If yes, 0, else -1 + * + * If yes return 0, else return -1. */ static int check_tracing_group(const char *grp_name) { @@ -201,10 +140,8 @@ end: } /* - * set_session_daemon_path - * - * Set sessiond socket path by putting it in - * the global sessiond_sock_path variable. + * Set sessiond socket path by putting it in the global sessiond_sock_path + * variable. */ static int set_session_daemon_path(void) { @@ -225,6 +162,108 @@ static int set_session_daemon_path(void) return 0; } +/* + * Connect to the LTTng session daemon. + * + * On success, return 0. On error, return -1. + */ +static int connect_sessiond(void) +{ + int ret; + + ret = set_session_daemon_path(); + if (ret < 0) { + return ret; + } + + /* Connect to the sesssion daemon */ + ret = lttcomm_connect_unix_sock(sessiond_sock_path); + if (ret < 0) { + return ret; + } + + sessiond_socket = ret; + connected = 1; + + return 0; +} + +/* + * Clean disconnect the session daemon. + */ +static int disconnect_sessiond(void) +{ + int ret = 0; + + if (connected) { + ret = lttcomm_close_unix_sock(sessiond_socket); + sessiond_socket = 0; + connected = 0; + } + + return ret; +} + +/* + * ask_sessiond + * + * Ask the session daemon a specific command and put the data into buf. + * + * Return size of data (only payload, not header). + */ +static int ask_sessiond(enum lttcomm_sessiond_command lct, void **buf) +{ + int ret; + size_t size; + void *data = NULL; + + ret = connect_sessiond(); + if (ret < 0) { + goto end; + } + + lsm.cmd_type = lct; + + /* Send command to session daemon */ + ret = send_data_sessiond(); + if (ret < 0) { + goto end; + } + + /* Get header from data transmission */ + ret = recv_data_sessiond(&llm, sizeof(llm)); + if (ret < 0) { + goto end; + } + + /* Check error code if OK */ + if (llm.ret_code != LTTCOMM_OK) { + ret = -llm.ret_code; + goto end; + } + + size = llm.data_size; + if (size == 0) { + goto end; + } + + data = (void*) malloc(size); + + /* Get payload data */ + ret = recv_data_sessiond(data, size); + if (ret < 0) { + free(data); + goto end; + } + + *buf = data; + ret = size; + +end: + disconnect_sessiond(); + return ret; +} + /* * lttng_start_tracing * @@ -469,52 +508,6 @@ int lttng_list_sessions(struct lttng_session **sessions) return ret / sizeof(struct lttng_session); } -/* - * lttng_connect_sessiond - * - * Connect to the LTTng session daemon. - * On success, return 0 - * On error, return a negative value - */ -int lttng_connect_sessiond(void) -{ - int ret; - - ret = set_session_daemon_path(); - if (ret < 0) { - return ret; - } - - /* Connect to the sesssion daemon */ - ret = lttcomm_connect_unix_sock(sessiond_sock_path); - if (ret < 0) { - return ret; - } - - sessiond_socket = ret; - connected = 1; - - return 0; -} - -/* - * lttng_disconnect_sessiond - * - * Clean disconnect the session daemon. - */ -int lttng_disconnect_sessiond(void) -{ - int ret = 0; - - if (connected) { - ret = lttcomm_close_unix_sock(sessiond_socket); - sessiond_socket = 0; - connected = 0; - } - - return ret; -} - void lttng_set_session_name(char *name) { strncpy(lsm.session_name, name, NAME_MAX); -- 2.34.1