瀏覽代碼

t_stats exported via unixsock interface

Jan Janak 21 年之前
父節點
當前提交
92ba56b463
共有 3 個文件被更改,包括 105 次插入0 次删除
  1. 51 0
      modules/tm/t_stats.c
  2. 27 0
      modules/tm/uac_unixsock.c
  3. 27 0
      modules/tm/uac_unixsock.h

+ 51 - 0
modules/tm/t_stats.c

@@ -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:

+ 27 - 0
modules/tm/uac_unixsock.c

@@ -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:
+ *    [email protected]
+ *
+ * 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"

+ 27 - 0
modules/tm/uac_unixsock.h

@@ -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:
+ *    [email protected]
+ *
+ * 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