#ifndef MON_H #define MON_H #include #include #include "../include/os.h" #include "../include/objects.h" #include "../include/osw-x.h" #include "../include/widget.h" #include "cdlg.h" #include "conwin.h" #include "mesgwin.h" /* * Program name and version: */ #define PROG_NAME "Monitor" #define PROG_VERSION "2.5.4" #define PROG_VERSION_MAJOR 2 #define PROG_VERSION_MINOR 5 #define PROG_VERSION_RELEASE 4 /* * Usage information: */ #define PROG_USAGE_MESSAGE "\ Usage: monitor
[options] [GUI_options]\n\ \n\
specifies the address to the swserv you want to\n\ monitor.\n\ \n\ specifies the AUX Stats port number swserv is expecting\n\ monitoring client connections from.\n\ \n\ [options] can be any of the following:\n\ \n\ -u Specifies to connect using a login name\n\ and password.\n\ -q Surpress stdout and stderr messages.\n\ --images-dir Specifies the images directory.\n\ --server-dir Specifies the server directory.\n\ --help Prints (this) help screen and exits.\n\ --version Prints version information and exits.\n\ \n\ [GUI_options] can be any options standard to your GUI, consult\n\ your GUI's manual for available options.\n\ \n" /* * Copyright information: */ #define PROG_COPYRIGHT "\ Copyright (C) 1997-2006 WolfPack Entertainment.\n\ This program is protected by international copyright laws and treaties,\n\ distribution and/or modification of this software in violation of the\n\ GNU Public License is strictly prohibited. Violators will be prosecuted\n\ to the fullest extent of the law." /* * Draw amount codes: */ #define MON_DRAW_AMOUNT_COMPLETE 0 #define MON_DRAW_AMOUNT_READOUT 1 #define MON_DRAW_AMOUNT_BUTTONS 2 /* * Monitor action codes: */ #define MON_ACTION_NONE 0 #define MON_ACTION_DISPLAY_NEXT 10 #define MON_ACTION_DISPLAY_PREV 11 #define MON_ACTION_MAP_MESSAGES 20 #define MON_ACTION_NEW_CONNECTION 30 #define MON_ACTION_NEW_MONITOR 31 /* * Runlevel: */ extern int runlevel; /* * Timming: */ extern time_t cur_millitime, cur_systime, lapsed_millitime; extern float time_compensation; /* * Options: */ typedef struct _mon_option_struct mon_option_struct; struct _mon_option_struct { bool_t quiet_mode; /* Do not print errors */ }; extern mon_option_struct option; /* * Directories: */ typedef struct { char images[PATH_MAX], server[PATH_MAX]; } mon_dname_struct; extern mon_dname_struct dname; /* * Timmers: * * In milliseconds. */ typedef struct { time_t pipe_recv, systems_check, connect_check; } mon_next_struct; extern mon_next_struct next; /* * Intervals: * * In milliseconds. */ typedef struct { time_t pipe_recv, systems_check, connect_check; } mon_interval_struct; extern mon_interval_struct interval; /* * Monitor colors: */ typedef struct { pixel_t readout_text, button_text, messages_text; } mon_color_struct; extern mon_color_struct mon_color; /* * Monitor fonts: */ typedef struct { font_t *readout, *button, *messages; } mon_font_struct; extern mon_font_struct mon_font; /* * Monitor images: */ typedef struct { image_t *readout_bkg, *mesg_bkg; image_t *btn_unarmed, *btn_armed, *btn_highlight; image_t *info, *warning, *error, *question; pixmap_t monitor_icon_pm; } mon_image_struct; extern mon_image_struct mon_image; /* * Cursors: */ typedef struct { WCursor *standard, *text; } mon_cursor_struct; extern mon_cursor_struct mon_cursor; /* * Monitor push button widget: */ #define MON_BTN_STATE_UNARMED 0 #define MON_BTN_STATE_ARMED 1 #define MON_BTN_STATE_HIGHLIGHTED 2 typedef struct { int x, y; unsigned int width, height; win_t parent; int state; char *label; void *client_data; int (*func_cb)(void *); } mon_push_button_struct; /* * Monitor stats: */ typedef struct _mon_stats_struct mon_stats_struct; struct _mon_stats_struct { char *title; time_t uptime; /* How long it has been up in systime sec */ int total_connections, guest_connections; int total_objects; off_t mem_total, mem_con, mem_obj; time_t next_save, next_export; pid_t pid; /* PID of server */ }; /* * Monitor: */ typedef struct _monitor_struct monitor_struct; #define MON_MAX_FRAMES 3 #define MON_NET_SHUTDOWN_RD 0 #define MON_NET_SHUTDOWN_WR 1 #define MON_NET_SHUTDOWN_RDWR 2 struct _monitor_struct { bool_t map_state, has_focus; int x, y; unsigned int width, height; visibility_t visibility_state; char *address; int port; char *name; char *password; bool_t close_wait; int socket; char *last_error_mesg; int frame; win_t toplevel; pixmap_t toplevel_buf; /* Buttons */ mon_push_button_struct shutdown_btn, messages_btn; /* Monitor stats */ mon_stats_struct stats; /* Menu */ menu_struct menu; /* Connect window */ con_win_struct cw; /* Associated message window */ mesgwin_struct mesgwin; }; #define MONITOR(p) ((monitor_struct *)(p)) extern monitor_struct **monitor; extern int total_monitors; /* * Dialogs: */ extern dialog_struct *mon_dlg; extern cdlg_struct *mon_cdlg; /* mon.cpp */ extern int MonIsAllocated(const int n); extern monitor_struct *MonGetPtr(const int n); extern monitor_struct *MonNew(const int argc, char **argv); extern void MonDraw(monitor_struct *m, const int amount); extern void MonQueueDraw(monitor_struct *m, const int amount); extern int MonManage(monitor_struct *m, event_t *event); extern int MonManageAll(event_t *event); extern void MonMap(monitor_struct *m); extern void MonUnmap(monitor_struct *m); extern void MonDelete(monitor_struct *m); /* moncb.cpp */ extern int MonShutdownPBCB(void *data); extern int MonMessagesPBCB(void *data); extern void MonMenuActivateCB(menu_struct *menu, int id, void *data); extern void MonConnectCB( const char *address, int port, const char *name, const char *password, void *data ); /* In monnet.cpp */ extern int MonNetConnect( monitor_struct *m, const char *address, int port, time_t timeout ); extern int MonNetSend(monitor_struct *m, const char *buf); extern void MonNetSendLogout(monitor_struct *m); extern int MonNetManage(monitor_struct *m); extern void MonNetShutdownConnection( monitor_struct *m, int how, bool_t is_initiator ); extern void MonNetCloseConnection(monitor_struct *m, time_t timeout); extern void MonNetWaitClose(monitor_struct *m, time_t timeout); extern void MonNetDisconnect(monitor_struct *m, time_t timeout); /* In main.cpp */ extern int MonCreateMonitor(const int argc, char **argv); extern void MonManageGUI(void *data); extern void MonManageNet(void *data); extern void MonManageNetReconnect(void *data); extern void MonResetTimmers(const time_t cur_ms, const time_t cur_sec); extern int MonInit(int argc, char **argv); extern void MonMainIteration(void *data); extern void MonMain(void *data); extern void MonMainPop(void *data); extern void MonMainPopAll(void *data); extern void MonShutdown(void); /* In monprint.cpp */ extern void MonDialog( const char *title, image_t *icon, const char *msg, win_t toplevel ); extern int MonGetResponse( const char *title, image_t *icon, const char *msg, unsigned int btn_flags, win_t toplevel ); extern void MonPrint(const char *msg); extern void MonPrintWarning(const char *msg); extern void MonPrintError(const char *msg); extern void MonPrintHelpStdout(void); extern void MonPrintVersionStdout(void); extern dialog_struct *MonDialogNew(void); extern void MonDialogDelete(dialog_struct *d); extern cdlg_struct *MonConfirmationDialogNew(void); extern void MonConfirmationDialogDelete(cdlg_struct *d); #endif /* MON_H */