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

Reply via email to