[NeoStats-Devel] [Commits] r2692 - in trunk: include modules/hostserv modules/statserv src

[email protected] Tue, 9 Aug 2005 16:51:25 +1000
Newsgroups gmane.comp.neostats.devel
Message-ID <[email protected]>
Author: Fish
Date: Tue Aug  9 14:51:21 2005
New Revision: 2692

Modified:
   trunk/include/neostats.h
   trunk/modules/hostserv/hostserv.c
   trunk/modules/statserv/channel.c
   trunk/modules/statserv/channel.h
   trunk/modules/statserv/htmlstats.c
   trunk/modules/statserv/htmlstats.h
   trunk/modules/statserv/server.c
   trunk/modules/statserv/stats.c
   trunk/modules/statserv/stats.h
   trunk/modules/statserv/statserv.c
   trunk/src/perl.c
   trunk/src/timer.c
Log:
AddTimer now takes a userptr so we can reference it when the handler is called for a timer (good for onshots that might be for different user structs)

Modified: trunk/include/neostats.h
==============================================================================
--- trunk/include/neostats.h	(original)
+++ trunk/include/neostats.h	Tue Aug  9 14:51:21 2005
@@ -831,7 +831,7 @@
 /** @brief Message function types
  * 
  */
-typedef int (*timer_handler) ( void );
+typedef int (*timer_handler) ( void* );
 
 /* Event system flags */
 #define	EVENT_FLAG_DISABLED			0x00000001	/* Event is disabled */
@@ -1094,6 +1094,8 @@
 	time_t lastrun;
 	/** Timer handler */
 	timer_handler handler;
+	/** Pointer to user suplied context */
+	void *userptr;
 } Timer;
 
 /** @brief BotInfo structure
@@ -1149,7 +1151,7 @@
 EXPORTFUNC int ModuleConfig( bot_setting *bot_settings );
 
 /* Add a new timer callback to NeoStats */
-EXPORTFUNC int AddTimer( TIMER_TYPE type, timer_handler handler, const char *name, int interval );
+EXPORTFUNC int AddTimer( TIMER_TYPE type, timer_handler handler, const char *name, int interval, void *userptr );
 /* Delete a timer callback from NeoStats */
 EXPORTFUNC int DelTimer( const char *timer_name );
 /* Change timer callback interval counter */

Modified: trunk/modules/hostserv/hostserv.c
==============================================================================
--- trunk/modules/hostserv/hostserv.c	(original)
+++ trunk/modules/hostserv/hostserv.c	Tue Aug  9 14:51:21 2005
@@ -180,7 +180,7 @@
  *  @return NS_SUCCESS if succeeds, else NS_FAILURE
  */
 
-int ExpireOldHosts( void )
+int ExpireOldHosts( void *userptr )
 {
 	lnode_t *hn, *hn2;
 	vhostentry *vhe;
@@ -320,7 +320,7 @@
 	if( reason == SET_CHANGE )
 	{
 		if( hs_cfg.expire ) {
-			AddTimer( TIMER_TYPE_INTERVAL, ExpireOldHosts, "ExpireOldHosts", 7200 );
+			AddTimer( TIMER_TYPE_INTERVAL, ExpireOldHosts, "ExpireOldHosts", 7200, NULL );
 		} else {
 			DelTimer( "ExpireOldHosts" );
 		}
@@ -455,7 +455,7 @@
 		return NS_FAILURE;
 	}
 	if( hs_cfg.expire ) {
-		AddTimer( TIMER_TYPE_INTERVAL, ExpireOldHosts, "ExpireOldHosts", 7200 );
+		AddTimer( TIMER_TYPE_INTERVAL, ExpireOldHosts, "ExpireOldHosts", 7200, NULL );
 	}
 	if( !HaveUmodeRegNick() ) 
 	{

Modified: trunk/modules/statserv/channel.c
==============================================================================
--- trunk/modules/statserv/channel.c	(original)
+++ trunk/modules/statserv/channel.c	Tue Aug  9 14:51:21 2005
@@ -389,7 +389,7 @@
 	return NS_FALSE;
 }
 
-int DelOldChan( void )
+int DelOldChan( void *userptr )
 {
 	time_t start;
 

Modified: trunk/modules/statserv/channel.h
==============================================================================
--- trunk/modules/statserv/channel.h	(original)
+++ trunk/modules/statserv/channel.h	Tue Aug  9 14:51:21 2005
@@ -62,7 +62,7 @@
 int ss_event_topic( CmdParams *cmdparams );
 int ss_event_kick( CmdParams *cmdparams );
 int ss_cmd_channel( CmdParams *cmdparams );
-int DelOldChan( void );
+int DelOldChan( void* );
 void InitChannelStats( void );
 void FiniChannelStats( void );
 void SaveChanStats( void );

Modified: trunk/modules/statserv/htmlstats.c
==============================================================================
--- trunk/modules/statserv/htmlstats.c	(original)
+++ trunk/modules/statserv/htmlstats.c	Tue Aug  9 14:51:21 2005
@@ -142,9 +142,9 @@
 		( int )ss->highest_ping, sftime( ss->ts_highest_ping ) );
 	if( ss->s )
 		os_fprintf( opf, "<tr><td>Current Ping</td><td colspan = 2>%d</td></tr>",
-			ss->s->server->ping );
+			(int)ss->s->server->ping );
 	os_fprintf( opf, "<tr><td>Server Splits</td><td colspan = 2>%d</td></tr>",
-		ss->splits.alltime.runningtotal );
+		(int)ss->splits.alltime.runningtotal );
 }
 
 static void html_srvlistdet( void )
@@ -402,7 +402,7 @@
 			os_fprintf( opf, "<table border=0><tr><th>Server Name</th><th>Users/Max</th><th>Opers/Max</th><th>Ping/Max</th></tr>" );
 			os_fprintf( opf, "<tr><td>%s</td><td>%d/%d</td><td>%d/%d</td><td>%d/%d</td></tr>\n",
 				ss->name, s->server->users, ss->users.alltime.max, ss->opers.current, ss->opers.alltime.max,
-				s->server->ping,( int )ss->highest_ping );
+				(int)s->server->ping,( int )ss->highest_ping );
 			get_map( s->name, level + 1 );
 		} else if( ( level > 0 ) && !ircstrcasecmp( uplink, s->uplinkname ) ) {
 			if( StatServ.exclusions && IsExcluded( s ) ) {
@@ -413,7 +413,7 @@
 			{
 				os_fprintf( opf, "<tr><td>%s</td><td>%d/%d</td><td>%d/%d</td><td>%d/%d</td></tr>\n",
 					ss->name, s->server->users, ss->users.alltime.max, ss->opers.current, ss->opers.alltime.max,
-					s->server->ping,( int )ss->highest_ping );
+					(int)s->server->ping,( int )ss->highest_ping );
 			}
 			else
 			{
@@ -423,7 +423,7 @@
 				}
 				os_fprintf( opf, "<tr><td>%s\\_%s</td><td>%d/%d</td><td>%d/%d</td><td>%d/%d</td></tr>\n",
 					buf, ss->name, s->server->users, ss->users.alltime.max, ss->opers.current, ss->opers.alltime.max,
-					s->server->ping,( int )ss->highest_ping );
+					(int)s->server->ping,( int )ss->highest_ping );
 			}
 			get_map( s->name, level + 1 );
 		}
@@ -436,7 +436,7 @@
 	os_fputs( "</TABLE>\n", opf );
 }
 
-int ss_html( void )
+int ss_html( void *userptr )
 {
 #define HTMLREADBUFSIZE 512
 	static char buf[HTMLREADBUFSIZE];
@@ -495,6 +495,6 @@
 {
 	nlog( LOG_NOTICE, "%s!%s@%s forced an update of the HTML file.",
 		    cmdparams->source->name, cmdparams->source->user->username, cmdparams->source->user->hostname );
-	ss_html();
+	ss_html( NULL);
 	return NS_SUCCESS;
 }

Modified: trunk/modules/statserv/htmlstats.h
==============================================================================
--- trunk/modules/statserv/htmlstats.h	(original)
+++ trunk/modules/statserv/htmlstats.h	Tue Aug  9 14:51:21 2005
@@ -25,6 +25,6 @@
 #define _HTMLSTATS_H_
 
 int ss_cmd_forcehtml (CmdParams *cmdparams);
-int ss_html (void);
+int ss_html (void *);
 
 #endif /* _HTMLSTATS_H_ */

Modified: trunk/modules/statserv/server.c
==============================================================================
--- trunk/modules/statserv/server.c	(original)
+++ trunk/modules/statserv/server.c	Tue Aug  9 14:51:21 2005
@@ -215,7 +215,7 @@
 			irc_prefmsg (ss_bot, u,
 				"\2%-45s      [ %d/%d ]   [ %d/%d ]   [ %d/%ld ]",
 				ss->name, s->server->users, (int)ss->users.alltime.max,
-				ss->opers.current, ss->opers.alltime.max, s->server->ping, ss->highest_ping);
+				ss->opers.current, ss->opers.alltime.max, (int)s->server->ping, ss->highest_ping);
 			makemap(s->name, u, level + 1);
 		} else if ((level > 0) && (s->uplink) &&  !ircstrcasecmp (s->uplink->name, uplink)) {
 			if (StatServ.exclusions && IsExcluded(s)) {
@@ -227,7 +227,7 @@
 				irc_prefmsg (ss_bot, u,
 					"\2%-40s      [ %d/%d ]   [ %d/%d ]   [ %d/%ld ]", 
 					ss->name, s->server->users, (int)ss->users.alltime.max,
-					ss->opers.current, ss->opers.alltime.max, s->server->ping, ss->highest_ping);
+					ss->opers.current, ss->opers.alltime.max, (int)s->server->ping, ss->highest_ping);
 			}
 			else
 			{
@@ -238,7 +238,7 @@
 				irc_prefmsg (ss_bot, u,
 					"%s \\_\2%-40s      [ %d/%d ]   [ %d/%d ]   [ %d/%ld ]",
 					buf, ss->name, s->server->users, (int)ss->users.alltime.max,
-					ss->opers.current, ss->opers.alltime.max, s->server->ping, ss->highest_ping);
+					ss->opers.current, ss->opers.alltime.max, (int)s->server->ping, ss->highest_ping);
 			}
 			makemap(s->name, u, level + 1);
 		}
@@ -386,7 +386,7 @@
 	irc_prefmsg (ss_bot, cmdparams->source, "Higest ping: %-3d at %s",
 		(int)ss->highest_ping, sftime(ss->ts_highest_ping));
 	if (s) {
-		irc_prefmsg (ss_bot, cmdparams->source, "Current Ping: %-3d", s->server->ping);
+		irc_prefmsg (ss_bot, cmdparams->source, "Current Ping: %-3d", (int)s->server->ping);
 	}
 	if (ss->splits.alltime.runningtotal >= 1) {
 		irc_prefmsg (ss_bot, cmdparams->source, 

Modified: trunk/modules/statserv/stats.c
==============================================================================
--- trunk/modules/statserv/stats.c	(original)
+++ trunk/modules/statserv/stats.c	Tue Aug  9 14:51:21 2005
@@ -241,7 +241,7 @@
 	announce(StatServ.lagalert, announce_buf);
 }
 
-int ResetStatistics (void)
+int ResetStatistics (void *userptr)
 {
 	SET_SEGV_LOCATION();
 	dlog (DEBUG1, "Reset Statistics");
@@ -252,7 +252,7 @@
 	return NS_SUCCESS;
 }
 
-int AverageStatistics (void)
+int AverageStatistics (void *userptr)
 {
 	SET_SEGV_LOCATION();
 	dlog (DEBUG1, "Average Statistics");

Modified: trunk/modules/statserv/stats.h
==============================================================================
--- trunk/modules/statserv/stats.h	(original)
+++ trunk/modules/statserv/stats.h	Tue Aug  9 14:51:21 2005
@@ -44,10 +44,10 @@
 
 void AverageStatisticEntry (statisticentry *stat, unsigned int current);
 void AverageStatistic (statistic *stat);
-int AverageStatistics (void);
+int AverageStatistics (void *);
 void ResetStatisticEntry (statisticentry *stat, unsigned int current);
 void ResetStatistic (statistic *stat);
-int ResetStatistics (void);
+int ResetStatistics (void *);
 int IncStatisticEntry (statisticentry *stat, unsigned int current);
 int IncStatistic (statistic *stat);
 void DecStatisticEntry (statisticentry *stat, unsigned int current);

Modified: trunk/modules/statserv/statserv.c
==============================================================================
--- trunk/modules/statserv/statserv.c	(original)
+++ trunk/modules/statserv/statserv.c	Tue Aug  9 14:51:21 2005
@@ -135,7 +135,7 @@
 	ss_settings,
 };
 
-int SaveStats(void)
+int SaveStats(void *userptr)
 {
 	SET_SEGV_LOCATION();
 	SaveServerStats ();
@@ -191,21 +191,21 @@
 		return NS_FAILURE;
 	}
 	/* Timer to save the database */
-	AddTimer (TIMER_TYPE_INTERVAL, SaveStats, "SaveStats", DBSAVETIME);
+	AddTimer (TIMER_TYPE_INTERVAL, SaveStats, "SaveStats", DBSAVETIME, NULL);
 	/* Timer to output html */
 	if (StatServ.html) {
-		AddTimer (TIMER_TYPE_INTERVAL, ss_html, "ss_html", StatServ.htmltime);
+		AddTimer (TIMER_TYPE_INTERVAL, ss_html, "ss_html", StatServ.htmltime, NULL);
 		/* Initial output at load */
-		ss_html ();
+		ss_html ( NULL );
 	}
 	/* Timer to reset timeslice stats */
-	AddTimer (TIMER_TYPE_MIDNIGHT, ResetStatistics, "ResetStatistics", 0);
+	AddTimer (TIMER_TYPE_MIDNIGHT, ResetStatistics, "ResetStatistics", 0, NULL);
 	/* Timer to average stats */
-	AddTimer (TIMER_TYPE_INTERVAL, AverageStatistics, "AverageStatistics", TS_ONE_HOUR);
+	AddTimer (TIMER_TYPE_INTERVAL, AverageStatistics, "AverageStatistics", TS_ONE_HOUR, NULL);
 	/* Initial average at load */
-	AverageStatistics();
+	AverageStatistics( NULL );
 	/* Timer to delete old channels */
-	AddTimer (TIMER_TYPE_INTERVAL, DelOldChan, "DelOldChan", TS_ONE_HOUR);
+	AddTimer (TIMER_TYPE_INTERVAL, DelOldChan, "DelOldChan", TS_ONE_HOUR, NULL);
 	return NS_SUCCESS;
 }
 
@@ -240,7 +240,7 @@
 			return NS_SUCCESS;
 		}
 		if (StatServ.html) {
-			AddTimer (TIMER_TYPE_INTERVAL, ss_html, "ss_html", StatServ.htmltime);
+			AddTimer (TIMER_TYPE_INTERVAL, ss_html, "ss_html", StatServ.htmltime, NULL);
 		} else {
 			DelTimer ("ss_html");
 		}
@@ -261,7 +261,7 @@
 			return NS_SUCCESS;
 		}
 		fclose (opf);
-		ss_html ();
+		ss_html (NULL);
 	}
 	return NS_SUCCESS;
 }

Modified: trunk/src/perl.c
==============================================================================
--- trunk/src/perl.c	(original)
+++ trunk/src/perl.c	Tue Aug  9 14:51:21 2005
@@ -1467,7 +1467,14 @@
 	newCONSTSUB (stash, "NS_ERR_PARAM_OUT_OF_RANGE", newSViv(NS_ERR_PARAM_OUT_OF_RANGE));
 	newCONSTSUB (stash, "NS_ERR_UNKNOWN_COMMAND", newSViv(NS_ERR_UNKNOWN_COMMAND));
 	newCONSTSUB (stash, "NS_ERR_NO_PERMISSION", newSViv(NS_ERR_NO_PERMISSION));
-	
+
+	newCONSTSUB (stash, "TIMER_TYPE_INTERVAL", newSViv(TIMER_TYPE_INTERVAL));	
+	newCONSTSUB (stash, "TIMER_TYPE_MIDNIGHT", newSViv(TIMER_TYPE_MIDNIGHT));	
+	newCONSTSUB (stash, "TIMER_TYPE_DAILY", newSViv(TIMER_TYPE_DAILY));	
+	newCONSTSUB (stash, "TIMER_TYPE_WEEKLY", newSViv(TIMER_TYPE_WEEKLY));	
+	newCONSTSUB (stash, "TIMER_TYPE_MONTHLY", newSViv(TIMER_TYPE_MONTHLY));	
+	newCONSTSUB (stash, "TIMER_TYPE_COUNTDOWN", newSViv(TIMER_TYPE_COUNTDOWN));	
+
 
 
 	newCONSTSUB (stash, "NS_SUCCESS", newSViv (NS_SUCCESS));

Modified: trunk/src/timer.c
==============================================================================
--- trunk/src/timer.c	(original)
+++ trunk/src/timer.c	Tue Aug  9 14:51:21 2005
@@ -179,7 +179,7 @@
  * @return NS_SUCCESS if added, NS_FAILURE if not 
 */
 int
-AddTimer (TIMER_TYPE type, timer_handler handler, const char *name, int interval)
+AddTimer (TIMER_TYPE type, timer_handler handler, const char *name, int interval, void *userptr)
 {
 	Timer *timer;
 	Module* moduleptr;
@@ -201,6 +201,7 @@
 		timer->lastrun = me.now;
 		timer->moduleptr = moduleptr;
 		timer->handler = handler;
+		timer->userptr = userptr;
 		dlog (DEBUG2, "AddTimer: Module %s added timer %s", moduleptr->info->name, name);
 		return NS_SUCCESS;
 	}
@@ -373,7 +374,7 @@
 			if (setjmp (sigvbuf) == 0) {
 				dlog (DEBUG3, "run_mod_timers: Running timer %s for module %s", timer->name, timer->moduleptr->info->name);
 				SET_RUN_LEVEL (timer->moduleptr);
-				if (timer->handler () < 0) {
+				if (timer->handler (timer->userptr) < 0) {
 					dlog (DEBUG2, "run_mod_timers: Deleting Timer %s for Module %s as requested", timer->name, timer->moduleptr->info->name);
 					hash_scan_delete (timerhash, tn);
 					hnode_destroy (tn);