agree On 03/28/2011 02:42 AM, Jan Friesse wrote: > Angus, > I would rather then switch see statically defined and initialized array. > It's shorter, nicer and easier to maintain. > > Honza > > Angus Salkeld napsal(a): >> 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)); > > _______________________________________________ > Openais mailing list > [email protected] > https://lists.linux-foundation.org/mailman/listinfo/openais
_______________________________________________ Openais mailing list [email protected] https://lists.linux-foundation.org/mailman/listinfo/openais
