From df418f28acf371003a4da758978529eceb0f0de1 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Sun, 24 Feb 2002 23:43:31 +0000 Subject: [PATCH] Added thread, socket, and client counters. --- src/sbbs3/sbbscon.c | 113 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 105 insertions(+), 8 deletions(-) diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c index c5ad90243f..169bee93f0 100644 --- a/src/sbbs3/sbbscon.c +++ b/src/sbbs3/sbbscon.c @@ -43,19 +43,25 @@ #include "services.h" /* services_startup_t, services_thread */ /* Constants */ -#define SBBSCON_VERSION "1.10" +#define SBBSCON_VERSION "1.20" /* Global variables */ BOOL bbs_running=FALSE; bbs_startup_t bbs_startup; +uint bbs_client_count=0; BOOL ftp_running=FALSE; ftp_startup_t ftp_startup; +uint ftp_client_count=0; BOOL mail_running=FALSE; mail_startup_t mail_startup; +uint mail_client_count=0; BOOL services_running=FALSE; services_startup_t services_startup; +uint services_client_count=0; +uint thread_count=1; +uint socket_count=0; -static const char* prompt = "Command (?=Help): "; +static const char* prompt = "[Threads: %3d Sockets: %3d Clients: %3d] (?=Help): "; static const char* usage = "\nusage: %s [[option] [...]]\n" "\noptions:\n\n" @@ -83,17 +89,46 @@ static void lputs(char *str) pthread_mutex_lock(&mutex); printf("\r%*s\r%s\n",strlen(prompt),"",str); - printf(prompt); + printf(prompt, thread_count, socket_count + ,bbs_client_count + ftp_client_count + mail_client_count + services_client_count); fflush(stdout); pthread_mutex_unlock(&mutex); } static void thread_up(BOOL up) { - if(up==TRUE) { - /* Add setuid code here */ - ; + static pthread_mutex_t mutex; + static BOOL mutex_initialized; + + if(!mutex_initialized) { + pthread_mutex_init(&mutex,NULL); + mutex_initialized=TRUE; + } + + pthread_mutex_lock(&mutex); + if(up) + thread_count++; + else if(thread_count>0) + thread_count--; + pthread_mutex_unlock(&mutex); +} + +static void socket_open(BOOL open) +{ + static pthread_mutex_t mutex; + static BOOL mutex_initialized; + + if(!mutex_initialized) { + pthread_mutex_init(&mutex,NULL); + mutex_initialized=TRUE; } + + pthread_mutex_lock(&mutex); + if(open) + socket_count++; + else if(socket_count>0) + socket_count--; + pthread_mutex_unlock(&mutex); } /************************************************/ @@ -144,6 +179,20 @@ static void bbs_terminated(int code) bbs_running=FALSE; } +static void bbs_clients(int clients) +{ + static pthread_mutex_t mutex; + static BOOL mutex_initialized; + + if(!mutex_initialized) { + pthread_mutex_init(&mutex,NULL); + mutex_initialized=TRUE; + } + pthread_mutex_lock(&mutex); + bbs_client_count=clients; + pthread_mutex_unlock(&mutex); +} + /****************************************************************************/ /* FTP local/log print routine */ /****************************************************************************/ @@ -180,6 +229,20 @@ static void ftp_terminated(int code) ftp_running=FALSE; } +static void ftp_clients(int clients) +{ + static pthread_mutex_t mutex; + static BOOL mutex_initialized; + + if(!mutex_initialized) { + pthread_mutex_init(&mutex,NULL); + mutex_initialized=TRUE; + } + pthread_mutex_lock(&mutex); + ftp_client_count=clients; + pthread_mutex_unlock(&mutex); +} + /****************************************************************************/ /* Mail Server local/log print routine */ /****************************************************************************/ @@ -216,6 +279,20 @@ static void mail_terminated(int code) mail_running=FALSE; } +static void mail_clients(int clients) +{ + static pthread_mutex_t mutex; + static BOOL mutex_initialized; + + if(!mutex_initialized) { + pthread_mutex_init(&mutex,NULL); + mutex_initialized=TRUE; + } + pthread_mutex_lock(&mutex); + mail_client_count=clients; + pthread_mutex_unlock(&mutex); +} + /****************************************************************************/ /* Services local/log print routine */ /****************************************************************************/ @@ -252,6 +329,20 @@ static void services_terminated(int code) services_running=FALSE; } +static void services_clients(int clients) +{ + static pthread_mutex_t mutex; + static BOOL mutex_initialized; + + if(!mutex_initialized) { + pthread_mutex_init(&mutex,NULL); + mutex_initialized=TRUE; + } + pthread_mutex_lock(&mutex); + services_client_count=clients; + pthread_mutex_unlock(&mutex); +} + /****************************************************************************/ /* Event thread local/log print routine */ /****************************************************************************/ @@ -329,12 +420,12 @@ int main(int argc, char** argv) bbs_startup.event_log=event_lputs; bbs_startup.started=bbs_started; bbs_startup.terminated=bbs_terminated; + bbs_startup.clients=bbs_clients; bbs_startup.thread_up=thread_up; + bbs_startup.socket_open=socket_open; /* These callbacks haven't been created yet bbs_startup.status=bbs_status; - bbs_startup.clients=bbs_clients; bbs_startup.client_on=client_on; - bbs_startup.socket_open=socket_open; */ strcpy(bbs_startup.ctrl_dir,ctrl_dir); @@ -344,7 +435,9 @@ int main(int argc, char** argv) ftp_startup.lputs=ftp_lputs; ftp_startup.started=ftp_started; ftp_startup.terminated=ftp_terminated; + ftp_startup.clients=ftp_clients; ftp_startup.thread_up=thread_up; + ftp_startup.socket_open=socket_open; ftp_startup.options=FTP_OPT_INDEX_FILE|FTP_OPT_ALLOW_QWK; strcpy(ftp_startup.index_file_name,"00index"); strcpy(ftp_startup.ctrl_dir,ctrl_dir); @@ -355,7 +448,9 @@ int main(int argc, char** argv) mail_startup.lputs=mail_lputs; mail_startup.started=mail_started; mail_startup.terminated=mail_terminated; + mail_startup.clients=mail_clients; mail_startup.thread_up=thread_up; + mail_startup.socket_open=socket_open; mail_startup.options|=MAIL_OPT_ALLOW_POP3; /* Spam filtering */ mail_startup.options|=MAIL_OPT_USE_RBL; /* Realtime Blackhole List */ @@ -394,7 +489,9 @@ int main(int argc, char** argv) services_startup.lputs=services_lputs; services_startup.started=services_started; services_startup.terminated=services_terminated; + services_startup.clients=services_clients; services_startup.thread_up=thread_up; + services_startup.socket_open=socket_open; strcpy(services_startup.ctrl_dir,ctrl_dir); /* Process arguments */ -- GitLab