1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-08 20:23:12 +02:00

* EventAdd() changed the order of parameters and expects every_msec now

which specifies the time in milliseconds rather than seconds. This
  allows for additional precision, or at least multiple calls per second.
  The minimum allowed every_msec value is 100 at this time.
  The prototype is now: EventAdd(Module *module, char *name,
  vFP event, void *data, long every_msec, int count);
This commit is contained in:
Bram Matthys
2019-09-22 15:05:00 +02:00
parent 4d277ccef8
commit 5b8f393a8f
22 changed files with 103 additions and 89 deletions
+1
View File
@@ -934,3 +934,4 @@ extern void _add_name_list(NameList **list, char *name);
extern void _del_name_list(NameList **list, char *name);
extern NameList *find_name_list(NameList *list, char *name);
extern NameList *find_name_list_match(NameList *list, char *name);
extern int minimum_msec_since_last_run(struct timeval *tv_old, long minimum);
+21 -19
View File
@@ -606,16 +606,17 @@ struct Module
#define MOD_OPT_GLOBAL 0x0008 /* Module is required to be loaded globally (i.e. across the entire network) */
#define MOD_Dep(name, container,module) {#name, (vFP *) &container, module}
/* Event structs */
/** Event structs */
struct Event {
Event *prev, *next;
char *name;
time_t every;
long howmany;
vFP event;
void *data;
time_t last;
Module *owner;
Event *prev; /**< Previous event (linked list) */
Event *next; /**< Next event (linked list) */
char *name; /**< Name of the event */
long every_msec; /**< How often we should run this event */
long count; /**< How many times this event should run (0 = infinite) */
vFP event; /**< Actual function to call */
void *data; /**< The data to pass in the function call */
struct timeval last_run; /**< Last time this event ran */
Module *owner; /**< To which module this event belongs */
};
#define EMOD_EVERY 0x0001
@@ -624,10 +625,11 @@ struct Event {
#define EMOD_EVENT 0x0008
#define EMOD_DATA 0x0010
/** event struct information, for EventMod() only - see Event for documentation */
struct EventInfo {
int flags;
long howmany;
time_t every;
long count;
time_t every_msec;
char *name;
vFP event;
void *data;
@@ -639,14 +641,14 @@ extern MODVAR Hooktype Hooktypes[MAXCUSTOMHOOKS];
extern MODVAR Callback *Callbacks[MAXCALLBACKS], *RCallbacks[MAXCALLBACKS];
extern MODVAR ClientCapability *clicaps;
extern Event *EventAdd(Module *, char *name, long every, long howmany, vFP event, void *data);
extern Event *EventDel(Event *event);
extern Event *EventMarkDel(Event *event);
extern Event *EventFind(char *name);
extern int EventMod(Event *event, EventInfo *mods);
extern void DoEvents(void);
extern void EventStatus(Client *sptr);
extern void SetupEvents(void);
extern Event *EventAdd(Module *module, char *name, vFP event, void *data, long every_msec, int count);
extern Event *EventDel(Event *event);
extern Event *EventMarkDel(Event *event);
extern Event *EventFind(char *name);
extern int EventMod(Event *event, EventInfo *mods);
extern void DoEvents(void);
extern void EventStatus(Client *sptr);
extern void SetupEvents(void);
extern void Module_Init(void);