Mon Mar 20 08:26:03 2006

Asterisk developer's documentation


Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

pbx_gtkconsole.c File Reference

GTK Console monitor -- very kludgy right now. More...

#include <sys/types.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <signal.h>
#include <sys/time.h>
#include <gtk/gtk.h>
#include <glib.h>
#include "asterisk.h"
#include "asterisk/pbx.h"
#include "asterisk/config.h"
#include "asterisk/module.h"
#include "asterisk/logger.h"
#include "asterisk/options.h"
#include "asterisk/cli.h"
#include "asterisk/utils.h"

Go to the source code of this file.

Functions

void __verboser (const char *stuff, int opos, int replacelast, int complete)
int add_mod (const char *module, const char *description, int usecount, const char *like)
void add_module (void)
 AST_MUTEX_DEFINE_STATIC (verb_lock)
int cleanup (void *useless)
int cli_activate (void)
void cliinput (void *data, int source, GdkInputCondition ic)
void * consolethread (void *data)
char * description (void)
 Provides a description of the module.
void exit_completely (GtkWidget *widget, gpointer data)
void exit_nicely (GtkWidget *widget, gpointer data)
void exit_now (GtkWidget *widget, gpointer data)
void file_ok_sel (GtkWidget *w, GtkFileSelection *fs)
char * key (void)
 Returns the ASTERISK_GPL_KEY.
int load_module (void)
 Initialize the module.
int mod_update (void)
void reload_module (void)
void remove_module (void)
int show_console (void)
int unload_module (void)
 Cleanup all module structures, sockets, etc.
void update_statusbar (char *msg)
int usecount (void)
 Provides a usecount.
void verboser (const char *stuff, int opos, int replacelast, int complete)

Variables

int cleanupid = -1
GtkWidget * cli
int clipipe [2]
GtkWidget * closew
pthread_t console_thread
char * dtext = "Asterisk PBX Console (GTK Version)"
int inuse = 0
timeval last
GtkWidget * modules
GtkWidget * quit
GtkWidget * statusbar
GtkWidget * verb
GtkWidget * window


Detailed Description

GTK Console monitor -- very kludgy right now.

Definition in file pbx_gtkconsole.c.


Function Documentation

void __verboser const char *  stuff,
int  opos,
int  replacelast,
int  complete
[static]
 

Definition at line 110 of file pbx_gtkconsole.c.

References cleanup(), cleanupid, last, tv, and verb.

Referenced by cliinput(), and verboser().

00111 {
00112    char *s2[2];
00113    struct timeval tv;
00114    int ms;
00115    s2[0] = (char *)stuff;
00116    s2[1] = NULL;
00117    gtk_clist_freeze(GTK_CLIST(verb));
00118    if (replacelast) 
00119       gtk_clist_remove(GTK_CLIST(verb), GTK_CLIST(verb)->rows - 1);
00120    gtk_clist_append(GTK_CLIST(verb), s2);
00121    if (!ast_tvzero(last)) {
00122       gdk_threads_leave();
00123       gettimeofday(&tv, NULL);
00124       if (cleanupid > -1)
00125          gtk_timeout_remove(cleanupid);
00126       ms = ast_tvdiff_ms(tv, last);
00127       if (ms < 100) {
00128          /* We just got a message within 100ms, so just schedule an update
00129             in the near future */
00130          cleanupid = gtk_timeout_add(200, cleanup, NULL);
00131       } else {
00132          cleanup(&cleanupid);
00133       }
00134       last = tv;
00135    } else {
00136       gettimeofday(&last, NULL);
00137    }
00138 }

int add_mod const char *  module,
const char *  description,
int  usecount,
const char *  like
[static]
 

Definition at line 278 of file pbx_gtkconsole.c.

References modules, and usecount().

Referenced by mod_update().

00279 {
00280    char use[10];
00281    char *pass[4];
00282    int row;
00283    snprintf(use, sizeof(use), "%d", usecount);
00284    pass[0] = module;
00285    pass[1] = description;
00286    pass[2] = use;
00287    pass[3] = NULL;
00288    row = gtk_clist_append(GTK_CLIST(modules), pass);
00289    gtk_clist_set_row_data(GTK_CLIST(modules), row, module);
00290    return 0;   
00291 }

void add_module void   )  [static]
 

Definition at line 264 of file pbx_gtkconsole.c.

References ast_config_AST_MODULE_DIR, and file_ok_sel().

Referenced by show_console().

00265 {
00266    char tmp[AST_CONFIG_MAX_PATH];
00267    GtkWidget *filew;
00268    snprintf(tmp, sizeof(tmp), "%s/*.so", ast_config_AST_MODULE_DIR);
00269    filew = gtk_file_selection_new("Load Module");
00270    gtk_signal_connect(GTK_OBJECT (GTK_FILE_SELECTION(filew)->ok_button),
00271                "clicked", GTK_SIGNAL_FUNC(file_ok_sel), filew);
00272    gtk_signal_connect_object(GTK_OBJECT (GTK_FILE_SELECTION(filew)->cancel_button),
00273                "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(filew));
00274    gtk_file_selection_set_filename(GTK_FILE_SELECTION(filew), (char *)tmp);
00275    gtk_widget_show(filew);
00276 }

AST_MUTEX_DEFINE_STATIC verb_lock   ) 
 

int cleanup void *  useless  )  [static]
 

Definition at line 98 of file pbx_gtkconsole.c.

References cleanupid, and verb.

Referenced by __verboser().

00099 {
00100    gdk_threads_enter();
00101    gtk_clist_thaw(GTK_CLIST(verb));
00102    gtk_widget_queue_resize(verb->parent);
00103    gtk_clist_moveto(GTK_CLIST(verb), GTK_CLIST(verb)->rows - 1, 0, 0, 0);
00104    cleanupid = -1;
00105    gdk_threads_leave();
00106    return 0;
00107 }

int cli_activate void   )  [static]
 

Definition at line 347 of file pbx_gtkconsole.c.

References ast_cli_command(), cli, and clipipe.

Referenced by show_console().

00348 {
00349    char buf[256] = "";
00350    strncpy(buf, gtk_entry_get_text(GTK_ENTRY(cli)), sizeof(buf) - 1);
00351    gtk_entry_set_text(GTK_ENTRY(cli), "");
00352    if (strlen(buf)) {
00353       ast_cli_command(clipipe[1], buf);
00354    }
00355    return TRUE;
00356 }

void cliinput void *  data,
int  source,
GdkInputCondition  ic
[static]
 

Definition at line 148 of file pbx_gtkconsole.c.

References __verboser().

Referenced by show_console().

00149 {
00150    static char buf[256];
00151    static int offset = 0;
00152    int res;
00153    char *c;
00154    char *l;
00155    char n;
00156    /* Read as much stuff is there */
00157    res = read(source, buf + offset, sizeof(buf) - 1 - offset);
00158    if (res > -1)
00159       buf[res + offset] = '\0';
00160    /* make sure we've null terminated whatever we have so far */
00161    c = buf;
00162    l = buf;
00163    while(*c) {
00164       if (*c == '\n') {
00165          /* Keep the trailing \n */
00166          c++;
00167          n = *c;
00168          *c = '\0';
00169          __verboser(l, 0, 0, 1);
00170          *(c - 1) = '\0';
00171          *c = n;
00172          l = c;
00173       } else
00174       c++;
00175    }
00176    if (strlen(l)) {
00177       /* We have some left over */
00178       memmove(buf, l, strlen(l) + 1);
00179       offset = strlen(buf);
00180    } else {
00181       offset = 0;
00182    }
00183 
00184 }

void* consolethread void *  data  )  [static]
 

Definition at line 338 of file pbx_gtkconsole.c.

References window.

Referenced by show_console().

00339 {
00340    gtk_widget_show(window);
00341    gdk_threads_enter();
00342    gtk_main();
00343    gdk_threads_leave();
00344    return NULL;
00345 }

char* description void   ) 
 

Provides a description of the module.

Returns:
a short description of your module

Definition at line 510 of file pbx_gtkconsole.c.

00511 {
00512    return dtext;
00513 }

void exit_completely GtkWidget *  widget,
gpointer  data
[static]
 

Definition at line 322 of file pbx_gtkconsole.c.

References ast_cli_command(), and clipipe.

Referenced by show_console().

00323 {
00324 #if 0
00325    /* Clever... */
00326    ast_cli_command(clipipe[1], "quit");
00327 #else
00328    kill(getpid(), SIGTERM);
00329 #endif
00330 }

void exit_nicely GtkWidget *  widget,
gpointer  data
[static]
 

Definition at line 332 of file pbx_gtkconsole.c.

References window.

Referenced by show_console().

00333 {
00334    fflush(stdout);
00335    gtk_widget_destroy(window);
00336 }

void exit_now GtkWidget *  widget,
gpointer  data
[static]
 

Definition at line 309 of file pbx_gtkconsole.c.

References ast_loader_unregister(), ast_unload_resource(), ast_unregister_verbose(), ast_update_use_count(), ast_verbose(), inuse, mod_update(), option_verbose, VERBOSE_PREFIX_2, and verboser().

Referenced by show_console().

00310 {
00311    ast_loader_unregister(mod_update);
00312    gtk_main_quit();
00313    inuse--;
00314    ast_update_use_count();
00315    ast_unregister_verbose(verboser);
00316    ast_unload_resource("pbx_gtkconsole", 0);
00317    if (option_verbose > 1)
00318       ast_verbose(VERBOSE_PREFIX_2 "GTK Console Monitor Exiting\n");
00319    /* XXX Trying to quit after calling this makes asterisk segfault XXX */
00320 }

void file_ok_sel GtkWidget *  w,
GtkFileSelection *  fs
[static]
 

Definition at line 244 of file pbx_gtkconsole.c.

References ast_config_AST_MODULE_DIR, ast_load_resource(), and update_statusbar().

Referenced by add_module().

00245 {
00246    char tmp[AST_CONFIG_MAX_PATH];
00247    char *module = gtk_file_selection_get_filename(fs);
00248    char buf[256];
00249    snprintf(tmp, sizeof(tmp), "%s/", ast_config_AST_MODULE_DIR);
00250    if (!strncmp(module, (char *)tmp, strlen(tmp))) 
00251       module += strlen(tmp);
00252    gdk_threads_leave();
00253    if (ast_load_resource(module)) {
00254       snprintf(buf, sizeof(buf), "Error loading module '%s'.", module);
00255       update_statusbar(buf);
00256    } else {
00257       snprintf(buf, sizeof(buf), "Module '%s' loaded", module);
00258       update_statusbar(buf);
00259    }
00260    gdk_threads_enter();
00261    gtk_widget_destroy(GTK_WIDGET(fs));
00262 }

char* key void   ) 
 

Returns the ASTERISK_GPL_KEY.

This returns the ASTERISK_GPL_KEY, signifiying that you agree to the terms of the GPL stated in the ASTERISK_GPL_KEY. Your module will not load if it does not return the EXACT message:

 char *key(void) {
         return ASTERISK_GPL_KEY;
 }

Returns:
ASTERISK_GPL_KEY

Definition at line 515 of file pbx_gtkconsole.c.

00516 {
00517    return ASTERISK_GPL_KEY;
00518 }

int load_module void   ) 
 

Initialize the module.

Initialize the Agents module. This function is being called by Asterisk when loading the module. Among other thing it registers applications, cli commands and reads the cofiguration file.

Returns:
int Always 0.

Definition at line 481 of file pbx_gtkconsole.c.

References ast_log(), ast_update_use_count(), ast_verbose(), clipipe, inuse, LOG_DEBUG, LOG_WARNING, option_verbose, show_console(), and VERBOSE_PREFIX_2.

00482 {
00483    if (pipe(clipipe)) {
00484       ast_log(LOG_WARNING, "Unable to create CLI pipe\n");
00485       return -1;
00486    }
00487    g_thread_init(NULL);
00488    if (gtk_init_check(NULL, NULL))  {
00489       if (!show_console()) {
00490          inuse++;
00491          ast_update_use_count();
00492          if (option_verbose > 1)
00493             ast_verbose( VERBOSE_PREFIX_2 "Launched GTK Console monitor\n");     
00494       } else
00495          ast_log(LOG_WARNING, "Unable to start GTK console\n");
00496    } else {
00497       if (option_debug)
00498          ast_log(LOG_DEBUG, "Unable to start GTK console monitor -- ignoring\n");
00499       else if (option_verbose > 1)
00500          ast_verbose( VERBOSE_PREFIX_2 "GTK is not available -- skipping monitor\n");
00501    }
00502    return 0;
00503 }

int mod_update void   )  [static]
 

Definition at line 293 of file pbx_gtkconsole.c.

References add_mod(), ast_update_module_list(), and modules.

Referenced by exit_now(), and show_console().

00294 {
00295    char *module= NULL;
00296    /* Update the mod stuff */
00297    if (GTK_CLIST(modules)->selection) {
00298       module= (char *)gtk_clist_get_row_data(GTK_CLIST(modules), (int) GTK_CLIST(modules)->selection->data);
00299    }
00300    gtk_clist_freeze(GTK_CLIST(modules));
00301    gtk_clist_clear(GTK_CLIST(modules));
00302    ast_update_module_list(add_mod, NULL);
00303    if (module)
00304       gtk_clist_select_row(GTK_CLIST(modules), gtk_clist_find_row_from_data(GTK_CLIST(modules), module), -1);
00305    gtk_clist_thaw(GTK_CLIST(modules));
00306    return 1;
00307 }

void reload_module void   )  [static]
 

Definition at line 206 of file pbx_gtkconsole.c.

References ast_load_resource(), ast_unload_resource(), free, modules, strdup, and update_statusbar().

Referenced by show_console().

00207 {
00208    int res, x;
00209    char *module;
00210    char buf[256];
00211    if (GTK_CLIST(modules)->selection) {
00212       module= (char *)gtk_clist_get_row_data(GTK_CLIST(modules), (int) GTK_CLIST(modules)->selection->data);
00213       module = strdup(module);
00214       if (module) {
00215          gdk_threads_leave();
00216          res = ast_unload_resource(module, 0);
00217          gdk_threads_enter();
00218          if (res) {
00219             snprintf(buf, sizeof(buf), "Module '%s' is in use", module);
00220             update_statusbar(buf);
00221          } else {
00222             gdk_threads_leave();
00223             res = ast_load_resource(module);
00224             gdk_threads_enter();
00225             if (res) {
00226                snprintf(buf, sizeof(buf), "Error reloading module '%s'", module);
00227             } else {
00228                snprintf(buf, sizeof(buf), "Module '%s' reloaded", module);
00229             }
00230             for (x=0; x < GTK_CLIST(modules)->rows; x++) {
00231                if (!strcmp((char *)gtk_clist_get_row_data(GTK_CLIST(modules), x), module)) {
00232                   gtk_clist_select_row(GTK_CLIST(modules), x, -1);
00233                   break;
00234                }
00235             }
00236             update_statusbar(buf);
00237             
00238          }
00239          free(module);
00240       }
00241    }
00242 }

void remove_module void   )  [static]
 

Definition at line 187 of file pbx_gtkconsole.c.

References ast_unload_resource(), modules, and update_statusbar().

Referenced by show_console().

00188 {
00189    int res;
00190    char *module;
00191    char buf[256];
00192    if (GTK_CLIST(modules)->selection) {
00193       module= (char *)gtk_clist_get_row_data(GTK_CLIST(modules), (int) GTK_CLIST(modules)->selection->data);
00194       gdk_threads_leave();
00195       res = ast_unload_resource(module, 0);
00196       gdk_threads_enter();
00197       if (res) {
00198          snprintf(buf, sizeof(buf), "Module '%s' is in use", module);
00199          update_statusbar(buf);
00200       } else {
00201          snprintf(buf, sizeof(buf), "Module '%s' removed", module);
00202          update_statusbar(buf);
00203       }
00204    }
00205 }

int show_console void   )  [static]
 

Definition at line 358 of file pbx_gtkconsole.c.

References add_module(), ast_loader_register(), ast_pthread_create, ast_register_verbose(), cli, cli_activate(), cliinput(), clipipe, closew, console_thread, consolethread(), exit_completely(), exit_nicely(), exit_now(), FALSE, mod_update(), modules, quit, reload_module(), remove_module(), statusbar, TRUE, update_statusbar(), verb, verboser(), and window.

Referenced by load_module().

00359 {
00360    GtkWidget *hbox;
00361    GtkWidget *wbox;
00362    GtkWidget *notebook;
00363    GtkWidget *sw;
00364    GtkWidget *bbox, *hbbox, *add, *removew, *reloadw;
00365    char *modtitles[3] = { "Module", "Description", "Use Count" };
00366    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
00367    
00368    statusbar = gtk_statusbar_new();
00369    gtk_widget_show(statusbar);
00370    
00371    gtk_signal_connect(GTK_OBJECT(window), "delete_event",
00372          GTK_SIGNAL_FUNC (exit_nicely), window);
00373    gtk_signal_connect(GTK_OBJECT(window), "destroy",
00374          GTK_SIGNAL_FUNC (exit_now), window);
00375    gtk_container_set_border_width(GTK_CONTAINER(window), 10);
00376 
00377    quit = gtk_button_new_with_label("Quit Asterisk");
00378    gtk_signal_connect(GTK_OBJECT(quit), "clicked",
00379          GTK_SIGNAL_FUNC (exit_completely), window);
00380    gtk_widget_show(quit);
00381 
00382    closew = gtk_button_new_with_label("Close Window");
00383    gtk_signal_connect(GTK_OBJECT(closew), "clicked",
00384          GTK_SIGNAL_FUNC (exit_nicely), window);
00385    gtk_widget_show(closew);
00386 
00387    notebook = gtk_notebook_new();
00388    verb = gtk_clist_new(1);
00389    gtk_clist_columns_autosize(GTK_CLIST(verb));
00390    sw = gtk_scrolled_window_new(NULL, NULL);
00391    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
00392    gtk_container_add(GTK_CONTAINER(sw), verb);
00393    gtk_widget_show(verb);
00394    gtk_widget_show(sw);
00395    gtk_widget_set_usize(verb, 640, 400);
00396    gtk_notebook_append_page(GTK_NOTEBOOK(notebook), sw, gtk_label_new("Verbose Status"));
00397 
00398    
00399    modules = gtk_clist_new_with_titles(3, modtitles);
00400    gtk_clist_columns_autosize(GTK_CLIST(modules));
00401    gtk_clist_set_column_auto_resize(GTK_CLIST(modules), 0, TRUE);
00402    gtk_clist_set_column_auto_resize(GTK_CLIST(modules), 1, TRUE);
00403    gtk_clist_set_column_auto_resize(GTK_CLIST(modules), 2, TRUE);
00404    gtk_clist_set_sort_column(GTK_CLIST(modules), 0);
00405    gtk_clist_set_auto_sort(GTK_CLIST(modules), TRUE);
00406    gtk_clist_column_titles_passive(GTK_CLIST(modules));
00407    sw = gtk_scrolled_window_new(NULL, NULL);
00408    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
00409    gtk_container_add(GTK_CONTAINER(sw), modules);
00410    gtk_clist_set_selection_mode(GTK_CLIST(modules), GTK_SELECTION_BROWSE);
00411    gtk_widget_show(modules);
00412    gtk_widget_show(sw);
00413 
00414    add = gtk_button_new_with_label("Load...");
00415    gtk_widget_show(add);
00416    removew = gtk_button_new_with_label("Unload");
00417    gtk_widget_show(removew);
00418    reloadw = gtk_button_new_with_label("Reload");
00419    gtk_widget_show(reloadw);
00420    gtk_signal_connect(GTK_OBJECT(removew), "clicked",
00421          GTK_SIGNAL_FUNC (remove_module), window);
00422    gtk_signal_connect(GTK_OBJECT(add), "clicked",
00423          GTK_SIGNAL_FUNC (add_module), window);
00424    gtk_signal_connect(GTK_OBJECT(reloadw), "clicked",
00425          GTK_SIGNAL_FUNC (reload_module), window);
00426       
00427    bbox = gtk_vbox_new(FALSE, 5);
00428    gtk_widget_show(bbox);
00429 
00430    gtk_widget_set_usize(bbox, 100, -1);
00431    gtk_box_pack_start(GTK_BOX(bbox), add, FALSE, FALSE, 5);
00432    gtk_box_pack_start(GTK_BOX(bbox), removew, FALSE, FALSE, 5);
00433    gtk_box_pack_start(GTK_BOX(bbox), reloadw, FALSE, FALSE, 5);
00434 
00435    hbbox = gtk_hbox_new(FALSE, 5);
00436    gtk_widget_show(hbbox);
00437    
00438    gtk_box_pack_start(GTK_BOX(hbbox), sw, TRUE, TRUE, 5);
00439    gtk_box_pack_start(GTK_BOX(hbbox), bbox, FALSE, FALSE, 5);
00440 
00441    gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbbox, gtk_label_new("Module Information"));
00442 
00443    gtk_widget_show(notebook);
00444 
00445    wbox = gtk_hbox_new(FALSE, 5);
00446    gtk_widget_show(wbox);
00447    gtk_box_pack_end(GTK_BOX(wbox), quit, FALSE, FALSE, 5);
00448    gtk_box_pack_end(GTK_BOX(wbox), closew, FALSE, FALSE, 5);
00449 
00450    hbox = gtk_vbox_new(FALSE, 0);
00451    gtk_widget_show(hbox);
00452    
00453    /* Command line */
00454    cli = gtk_entry_new();
00455    gtk_widget_show(cli);
00456 
00457    gtk_signal_connect(GTK_OBJECT(cli), "activate",
00458          GTK_SIGNAL_FUNC (cli_activate), NULL);
00459 
00460    gtk_box_pack_start(GTK_BOX(hbox), notebook, TRUE, TRUE, 5);
00461    gtk_box_pack_start(GTK_BOX(hbox), wbox, FALSE, FALSE, 5);
00462    gtk_box_pack_start(GTK_BOX(hbox), cli, FALSE, FALSE, 0);
00463    gtk_box_pack_start(GTK_BOX(hbox), statusbar, FALSE, FALSE, 0);
00464    gtk_container_add(GTK_CONTAINER(window), hbox);
00465    gtk_window_set_title(GTK_WINDOW(window), "Asterisk Console");
00466    gtk_widget_grab_focus(cli);
00467    ast_pthread_create(&console_thread, NULL, consolethread, NULL);
00468    /* XXX Okay, seriously fix me! XXX */
00469    usleep(100000);
00470    ast_register_verbose(verboser);
00471    gtk_clist_freeze(GTK_CLIST(verb));
00472    ast_loader_register(mod_update);
00473    gtk_clist_thaw(GTK_CLIST(verb));
00474    gdk_input_add(clipipe[0], GDK_INPUT_READ, cliinput, NULL);
00475    mod_update();
00476    update_statusbar("Asterisk Console Ready");
00477    return 0;
00478 }

int unload_module void   ) 
 

Cleanup all module structures, sockets, etc.

Standard module functions ...

Definition at line 84 of file pbx_gtkconsole.c.

References clipipe, console_thread, and window.

00085 {
00086    if (inuse) {
00087       /* Kill off the main thread */
00088       pthread_cancel(console_thread);
00089       gdk_threads_enter();
00090       gtk_widget_destroy(window);
00091       gdk_threads_leave();
00092       close(clipipe[0]);
00093       close(clipipe[1]);
00094    }
00095    return 0;
00096 }

void update_statusbar char *  msg  )  [static]
 

Definition at line 78 of file pbx_gtkconsole.c.

References statusbar.

Referenced by file_ok_sel(), reload_module(), remove_module(), and show_console().

00079 {
00080    gtk_statusbar_pop(GTK_STATUSBAR(statusbar), 1);
00081    gtk_statusbar_push(GTK_STATUSBAR(statusbar), 1, msg);
00082 }

int usecount void   ) 
 

Provides a usecount.

This function will be called by various parts of asterisk. Basically, all it has to do is to return a usecount when called. You will need to maintain your usecount within the module somewhere. The usecount should be how many channels provided by this module are in use.

Returns:
The module's usecount.

Definition at line 505 of file pbx_gtkconsole.c.

00506 {
00507    return inuse;
00508 }

void verboser const char *  stuff,
int  opos,
int  replacelast,
int  complete
[static]
 

Definition at line 140 of file pbx_gtkconsole.c.

References __verboser(), ast_mutex_lock(), and ast_mutex_unlock().

Referenced by exit_now(), and show_console().

00141 {
00142    ast_mutex_lock(&verb_lock);
00143    /* Lock appropriately if we're really being called in verbose mode */
00144    __verboser(stuff, opos, replacelast, complete);
00145    ast_mutex_unlock(&verb_lock);
00146 }


Variable Documentation

int cleanupid = -1 [static]
 

Definition at line 64 of file pbx_gtkconsole.c.

Referenced by __verboser(), and cleanup().

GtkWidget* cli [static]
 

Definition at line 74 of file pbx_gtkconsole.c.

Referenced by cli_activate(), and show_console().

int clipipe[2] [static]
 

Definition at line 63 of file pbx_gtkconsole.c.

Referenced by cli_activate(), exit_completely(), load_module(), show_console(), and unload_module().

GtkWidget* closew [static]
 

Definition at line 70 of file pbx_gtkconsole.c.

Referenced by show_console().

pthread_t console_thread [static]
 

Definition at line 60 of file pbx_gtkconsole.c.

Referenced by show_console(), and unload_module().

char* dtext = "Asterisk PBX Console (GTK Version)" [static]
 

Definition at line 66 of file pbx_gtkconsole.c.

int inuse = 0 [static]
 

Definition at line 62 of file pbx_gtkconsole.c.

Referenced by exit_now(), and load_module().

struct timeval last [static]
 

Definition at line 76 of file pbx_gtkconsole.c.

Referenced by __verboser().

GtkWidget* modules [static]
 

Definition at line 72 of file pbx_gtkconsole.c.

Referenced by add_mod(), mod_update(), reload_module(), remove_module(), and show_console().

GtkWidget* quit [static]
 

Definition at line 69 of file pbx_gtkconsole.c.

Referenced by show_console().

GtkWidget* statusbar [static]
 

Definition at line 73 of file pbx_gtkconsole.c.

Referenced by show_console(), and update_statusbar().

GtkWidget* verb [static]
 

Definition at line 71 of file pbx_gtkconsole.c.

Referenced by __verboser(), cleanup(), and show_console().

GtkWidget* window [static]
 

Definition at line 68 of file pbx_gtkconsole.c.

Referenced by consolethread(), exit_nicely(), show_console(), and unload_module().


Generated on Mon Mar 20 08:26:03 2006 for Asterisk - the Open Source PBX by  doxygen 1.3.9.1