t_stats exported via unixsock interface
authorJan Janak <jan@iptel.org>
Fri, 5 Mar 2004 22:53:21 +0000 (22:53 +0000)
committerJan Janak <jan@iptel.org>
Fri, 5 Mar 2004 22:53:21 +0000 (22:53 +0000)
modules/tm/t_stats.c
modules/tm/uac_unixsock.c
modules/tm/uac_unixsock.h

index bcafc5f..f0e7366 100644 (file)
@@ -42,6 +42,7 @@
 #include "../../dprint.h"
 #include "../../config.h"
 #include "../../fifo_server.h"
+#include "../../unixsock_server.h"
 #include "../../pt.h"
 
 struct t_stats *tm_stats=0;
@@ -110,6 +111,51 @@ int static fifo_stats( FILE *pipe, char *response_file )
 
 }
 
+int static unixsock_stats(str* cmd)
+{
+       unsigned long total, current, waiting, total_local;
+       int i;
+       int pno;
+
+       unixsock_reply_asciiz( "200 OK\n");
+
+       pno = process_count();
+       for(i = 0, total = 0, waiting = 0, total_local = 0; i < pno; i++) {
+               total += tm_stats->s_transactions[i];
+               waiting += tm_stats->s_waiting[i];
+               total_local += tm_stats->s_client_transactions[i];
+       }
+       current = total - tm_stats->deleted;
+       waiting -= tm_stats->deleted;
+
+       if (unixsock_reply_printf("Current: %lu (%lu waiting) "
+                                 "Total: %lu (%lu local) " CLEANUP_EOL,
+                                 current, waiting, total, total_local) < 0) goto err;
+
+       if (unixsock_reply_printf("Replied localy: %lu" CLEANUP_EOL ,
+                                 tm_stats->replied_localy ) < 0) goto err;
+       if (unixsock_reply_printf("Completion status 6xx: %lu,",
+                                 tm_stats->completed_6xx ) < 0) goto err;
+       if (unixsock_reply_printf(" 5xx: %lu,",
+                                 tm_stats->completed_5xx ) < 0) goto err;
+       if (unixsock_reply_printf(" 4xx: %lu,",
+                                 tm_stats->completed_4xx ) < 0) goto err;
+       if (unixsock_reply_printf(" 3xx: %lu,",
+                                 tm_stats->completed_3xx ) < 0) goto err;
+       if (unixsock_reply_printf("2xx: %lu" CLEANUP_EOL ,
+                                 tm_stats->completed_2xx ) < 0) goto err;
+       
+       unixsock_reply_send();
+       return 0;
+
+ err:
+       unixsock_reply_reset();
+       unixsock_reply_asciiz("500 Buffer too small\n");
+       unixsock_reply_send();
+       return -1;
+}
+
+
 int init_tm_stats(void)
 {
        int size;
@@ -148,6 +194,11 @@ int init_tm_stats(void)
                goto error4;
        }
 
+       if (unixsock_register_cmd("t_stats", unixsock_stats) < 0) {
+               LOG(L_CRIT, "cannot register fifo stats\n");
+               goto error4;
+       }
+
        return 1;
 
 error4:
index cec96a6..81b766f 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2001-2004 FhG Fokus
+ *
+ * This file is part of ser, a free SIP server.
+ *
+ * ser is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version
+ *
+ * For a license to use the ser software under conditions
+ * other than those described here, or to purchase support for this
+ * software, please contact iptel.org by e-mail at the following addresses:
+ *    info@iptel.org
+ *
+ * ser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License 
+ * along with this program; if not, write to the Free Software 
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
 #include <string.h>
 #include "../../mem/mem.h"
 #include "../../mem/shm_mem.h"
index 4537dbf..3858077 100644 (file)
@@ -1,3 +1,30 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2001-2004 FhG Fokus
+ *
+ * This file is part of ser, a free SIP server.
+ *
+ * ser is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version
+ *
+ * For a license to use the ser software under conditions
+ * other than those described here, or to purchase support for this
+ * software, please contact iptel.org by e-mail at the following addresses:
+ *    info@iptel.org
+ *
+ * ser is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License 
+ * along with this program; if not, write to the Free Software 
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
 #ifndef _UAC_UNIXSOCK_H
 #define _UAC_UNIXSOCK_H