aboutsummaryrefslogtreecommitdiffstats
path: root/codecs
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-31 15:51:45 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-31 15:51:45 +0000
commitac97f6a9c6de9848e7efa5f3ce7e6eb59b51016f (patch)
tree75bdc8aaf9268a9852737365e20c6c25bd52ec55 /codecs
parentc03b18cbadd0cb6a8150199c260f761728f9dab2 (diff)
add missing "transcoder show" (and deprecated "show transcoder") CLI commands that were in 1.2 but never added to 1.4
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@81405 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'codecs')
-rw-r--r--codecs/codec_zap.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/codecs/codec_zap.c b/codecs/codec_zap.c
index c3c7463e4..4989446ea 100644
--- a/codecs/codec_zap.c
+++ b/codecs/codec_zap.c
@@ -51,6 +51,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/config.h"
#include "asterisk/options.h"
#include "asterisk/module.h"
+#include "asterisk/cli.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/utils.h"
@@ -60,6 +61,37 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
static unsigned int global_useplc = 0;
+static struct channel_usage {
+ int total;
+ int encoders;
+ int decoders;
+} channels;
+
+static char show_transcoder_usage[] =
+"Usage: show transcoder\n"
+" Displays channel utilization of Zaptel transcoder(s).\n";
+
+static char transcoder_show_usage[] =
+"Usage: transcoder show\n"
+" Displays channel utilization of Zaptel transcoder(s).\n";
+
+static int transcoder_show(int fd, int argc, char **argv);
+
+static struct ast_cli_entry cli_deprecated[] = {
+ { { "show", "transcoder", NULL },
+ transcoder_show,
+ "Display Zaptel transcoder utilization.",
+ show_transcoder_usage}
+};
+
+static struct ast_cli_entry cli[] = {
+ { { "transcoder", "show", NULL },
+ transcoder_show,
+ "Display Zaptel transcoder utilization.",
+ transcoder_show_usage, NULL,
+ &cli_deprecated[0]}
+};
+
struct format_map {
unsigned int map[32][32];
};
@@ -84,6 +116,20 @@ struct pvt {
struct ast_frame f;
};
+static int transcoder_show(int fd, int argc, char **argv)
+{
+ struct channel_usage copy;
+
+ copy = channels;
+
+ if (copy.total == 0)
+ ast_cli(fd, "No Zaptel transcoders found.\n");
+ else
+ ast_cli(fd, "%d/%d encoders/decoders of %d channels are in use.\n", copy.encoders, copy.decoders, copy.total);
+
+ return RESULT_SUCCESS;
+}
+
static int zap_framein(struct ast_trans_pvt *pvt, struct ast_frame *f)
{
struct pvt *ztp = pvt->pvt;
@@ -173,6 +219,17 @@ static void zap_destroy(struct ast_trans_pvt *pvt)
{
struct pvt *ztp = pvt->pvt;
+ ast_atomic_fetchadd_int(&channels.total, -1);
+ switch (ztp->hdr->dstfmt) {
+ case AST_FORMAT_G729A:
+ case AST_FORMAT_G723_1:
+ ast_atomic_fetchadd_int(&channels.encoders, -1);
+ break;
+ default:
+ ast_atomic_fetchadd_int(&channels.decoders, -1);
+ break;
+ }
+
munmap(ztp->hdr, sizeof(*ztp->hdr));
close(ztp->fd);
}
@@ -224,6 +281,17 @@ static int zap_translate(struct ast_trans_pvt *pvt, int dest, int source)
ztp->fd = fd;
ztp->hdr = hdr;
+ ast_atomic_fetchadd_int(&channels.total, +1);
+ switch (hdr->dstfmt) {
+ case AST_FORMAT_G729A:
+ case AST_FORMAT_G723_1:
+ ast_atomic_fetchadd_int(&channels.encoders, +1);
+ break;
+ default:
+ ast_atomic_fetchadd_int(&channels.decoders, +1);
+ break;
+ }
+
return 0;
}
@@ -401,6 +469,7 @@ static int reload(void)
static int unload_module(void)
{
+ ast_cli_unregister_multiple(cli, sizeof(cli) / sizeof(cli[0]));
unregister_translators();
return 0;
@@ -410,6 +479,7 @@ static int load_module(void)
{
parse_config();
find_transcoders();
+ ast_cli_register_multiple(cli, sizeof(cli) / sizeof(cli[0]));
return 0;
}