[Openais] [PATCH 3/3] STATS: add the service name to the connection name.
Jan Friesse
jfriesse at redhat.com
Mon Mar 28 02:42:05 PDT 2011
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 <asalkeld at redhat.com>
> ---
> 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));
More information about the Openais
mailing list