This helps to quickly identify what service the application is connected to.
The object will now look like: runtime.connections.corosync-objctl:CONFDB:19654:13.service_id=11 runtime.connections.corosync-objctl:CONFDB:19654:13.client_pid=19654 etc... This also makes it clearer to receivers of the dbus/snmp events what is going on. Signed-off-by: Angus Salkeld <[email protected]> --- exec/coroipcs.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 99 insertions(+), 7 deletions(-) diff --git a/exec/coroipcs.c b/exec/coroipcs.c index b64c5a9..bfb638b 100644 --- a/exec/coroipcs.c +++ b/exec/coroipcs.c @@ -70,6 +70,7 @@ #include <sys/shm.h> #include <corosync/corotypes.h> +#include <corosync/corodefs.h> #include <corosync/list.h> #include <corosync/coroipc_types.h> @@ -1541,20 +1542,111 @@ static char * pid_to_name (pid_t pid, char *out_name, size_t name_len) return out_name; } +static const char * short_service_name_get(uint32_t service_id, char *buf) +{ + const char * name; + switch (service_id) { + case EVS_SERVICE: + name = "EVS"; + break; + case CLM_SERVICE: + name = "CLM"; + break; + case AMF_SERVICE: + name = "AMF"; + break; + case CKPT_SERVICE: + name = "CKPT"; + break; + case EVT_SERVICE: + name = "EVT"; + break; + case LCK_SERVICE: + name = "LCK"; + break; + case MSG_SERVICE: + name = "MSG"; + break; + case CFG_SERVICE: + name = "CFG"; + break; + case CPG_SERVICE: + name = "CPG"; + break; + case CMAN_SERVICE: + name = "CMAN"; + break; + case PCMK_SERVICE: + name = "PCMK"; + break; + case CONFDB_SERVICE: + name = "CONFDB"; + break; + case QUORUM_SERVICE: + name = "QUORUM"; + break; + case PLOAD_SERVICE: + name = "PLOAD"; + break; + case TMR_SERVICE: + name = "TMR"; + break; + case VOTEQUORUM_SERVICE: + name = "VOTEQUORUM"; + break; + case NTF_SERVICE: + name = "NTF"; + break; + case AMF_V2_SERVICE: + name = "AMF"; + break; + case TST_SV1_SERVICE: + name = "TST"; + break; + case TST_SV2_SERVICE: + name = "TST"; + break; + case MON_SERVICE: + name = "MON"; + break; + case WD_SERVICE: + name = "WD"; + break; + default: + sprintf(buf, "%d", service_id); + name = buf; + break; + } + return name; +} + + static void coroipcs_init_conn_stats ( struct conn_info *conn) { char conn_name[CS_MAX_NAME_LENGTH]; char proc_name[CS_MAX_NAME_LENGTH]; + char int_str[4]; if (conn->client_pid > 0) { - if (pid_to_name (conn->client_pid, proc_name, sizeof(proc_name))) - snprintf (conn_name, sizeof(conn_name), "%s:%d:%d", proc_name, conn->client_pid, conn->fd); - else - snprintf (conn_name, sizeof(conn_name), "%d:%d", conn->client_pid, conn->fd); - } else - snprintf (conn_name, sizeof(conn_name), "%d", conn->fd); - + if (pid_to_name (conn->client_pid, proc_name, sizeof(proc_name))) { + snprintf (conn_name, sizeof(conn_name), + "%s:%s:%d:%d", proc_name, + short_service_name_get(conn->service, int_str), + conn->client_pid, conn->fd); + } else { + snprintf (conn_name, sizeof(conn_name), + "proc:%s:%d:%d", + short_service_name_get(conn->service, int_str), + conn->client_pid, + conn->fd); + } + } else { + snprintf (conn_name, sizeof(conn_name), + "proc:%s:pid:%d", + short_service_name_get(conn->service, int_str), + conn->fd); + } conn->stats_handle = api->stats_create_connection (conn_name, conn->client_pid, conn->fd); api->stats_update_value (conn->stats_handle, "service_id", &conn->service, sizeof(conn->service)); -- 1.7.4 _______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
