From 207fef0a48f458ca28b829b025a4ab2eace2a6aa Mon Sep 17 00:00:00 2001 From: markster Date: Fri, 22 Oct 1999 01:49:23 +0000 Subject: Version 0.1.0 from FTP git-svn-id: http://svn.digium.com/svn/asterisk/trunk@7 f38db490-d61c-443f-a65b-d21fe96a405b --- apps/app_skel.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100755 apps/app_skel.c diff --git a/apps/app_skel.c b/apps/app_skel.c new file mode 100755 index 000000000..fd7594037 --- /dev/null +++ b/apps/app_skel.c @@ -0,0 +1,102 @@ +/* + * Asterisk -- A telephony toolkit for Linux. + * + * Skeleton application + * + * Copyright (C) 1999, Adtran Inc. and Linux Support Services, LLC + * + * Mark Spencer + * + * This program is free software, distributed under the terms of + * the GNU General Public License + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +static pthread_mutex_t skellock = PTHREAD_MUTEX_INITIALIZER; + +static int usecnt=0; + +static char *tdesc = "Trivial skeleton Application"; + +static char *app = "skel"; + +struct skeluser { + struct ast_channel *chan; + struct skeluser *next; +} *users = NULL; + +static int skel_exec(struct ast_channel *chan, void *data) +{ + int res=0; + struct skeluser *u, *ul=NULL; + if (!data) { + ast_log(LOG_WARNING, "skel requires an argument (filename)\n"); + return -1; + } + if (!(u=malloc(sizeof(struct skeluser)))) { + ast_log(LOG_WARNING, "Out of memory\n"); + return -1; + } + pthread_mutex_lock(&skellock); + u->chan = chan; + u->next = users; + users = u; + usecnt++; + pthread_mutex_unlock(&skellock); + /* Do our thing here */ + pthread_mutex_lock(&skellock); + u = users; + while(u) { + if (ul) + ul->next = u->next; + else + users = u->next; + u = u->next; + } + usecnt--; + pthread_mutex_unlock(&skellock); + return res; +} + +int unload_module(void) +{ + struct skeluser *u; + pthread_mutex_lock(&skellock); + u = users; + while(u) { + /* Hang up anybody who is using us */ + ast_softhangup(u->chan); + u = u->next; + } + pthread_mutex_unlock(&skellock); + return ast_unregister_application(app); +} + +int load_module(void) +{ + return ast_register_application(app, skel_exec); +} + +char *description(void) +{ + return tdesc; +} + +int usecount(void) +{ + int res; + pthread_mutex_lock(&skellock); + res = usecnt; + pthread_mutex_unlock(&skellock); + return res; +} -- cgit v1.2.3