Crossfire Server, Trunk
timers.cpp File Reference
#include <string.h>
#include "timers.h"
#include "sproto.h"
+ Include dependency graph for timers.cpp:

Go to the source code of this file.

Functions

int cftimer_create (int id, long delay, object *ob, int mode)
 
int cftimer_destroy (int id)
 
int cftimer_find_free_id (void)
 
void cftimer_init (void)
 
static void cftimer_process_event (tag_t ob_tag)
 
void cftimer_process_timers (void)
 

Variables

cftimer timers_table [MAX_TIMERS]
 

Detailed Description

This handles custom timers. See Custom timers.

Definition in file timers.cpp.

Function Documentation

◆ cftimer_create()

int cftimer_create ( int  id,
long  delay,
object ob,
int  mode 
)

Creates a new timer.

Parameters
iddesired timer identifier.
delaydesired timer delay.
obobject that will be linked to this timer. Should have an EVENT_TIMER handler.
modeunit for delay, should be TIMER_MODE_SECONDS or TIMER_MODE_CYCLES. See timers.h.
Return values
TIMER_ERR_NONEtimer was successfully created.
TIMER_ERR_IDinvalid ID.
TIMER_ERR_MODEinvalid mode.
TIMER_ERR_OBJob is NULL or has no EVENT_TIMER handler.

Definition at line 97 of file timers.cpp.

References cftimer::delay, EVENT_CONNECTOR, EVENT_TIMER, diamondslots::id, MAX_TIMERS, cftimer::mode, guildjoin::ob, cftimer::ob_tag, object_find_by_type_subtype(), seconds(), TIMER_ERR_ID, TIMER_ERR_MODE, TIMER_ERR_NONE, TIMER_ERR_OBJ, TIMER_MODE_CYCLES, TIMER_MODE_DEAD, TIMER_MODE_SECONDS, and timers_table.

Referenced by cfapi_timer_create().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cftimer_destroy()

int cftimer_destroy ( int  id)

Destroys an existing timer.

Parameters
ididentifier of the timer to destroy.
Return values
TIMER_ERR_NONEno problem encountered.
TIMER_ERR_IDunknown id - timer not found or invalid.

Definition at line 128 of file timers.cpp.

References diamondslots::id, MAX_TIMERS, cftimer::mode, TIMER_ERR_ID, TIMER_ERR_NONE, TIMER_MODE_DEAD, and timers_table.

Referenced by cfapi_timer_destroy().

+ Here is the caller graph for this function:

◆ cftimer_find_free_id()

int cftimer_find_free_id ( void  )

Finds a free ID for a new timer.

Return values
TIMER_ERR_IDno free ID available.
>=0an available ID.

Definition at line 144 of file timers.cpp.

References MAX_TIMERS, TIMER_ERR_ID, TIMER_MODE_DEAD, and timers_table.

Referenced by cfapi_timer_create().

+ Here is the caller graph for this function:

◆ cftimer_init()

void cftimer_init ( void  )

Initialize timers.

Definition at line 157 of file timers.cpp.

References MAX_TIMERS, and timers_table.

Referenced by init().

+ Here is the caller graph for this function:

◆ cftimer_process_event()

static void cftimer_process_event ( tag_t  ob_tag)
static

Triggers the EVENT_TIMER of the given object.

Parameters
ob_tagobject tag to use.

Definition at line 71 of file timers.cpp.

References EVENT_TIMER, events_execute_object_event(), guildjoin::ob, object_find_by_tag_global(), and SCRIPT_FIX_ALL.

Referenced by cftimer_process_timers().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ cftimer_process_timers()

void cftimer_process_timers ( void  )

Processes all timers.

Definition at line 44 of file timers.cpp.

References cftimer_process_event(), cftimer::delay, MAX_TIMERS, cftimer::mode, seconds(), TIMER_MODE_CYCLES, TIMER_MODE_DEAD, TIMER_MODE_SECONDS, and timers_table.

Referenced by server_main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ timers_table

cftimer timers_table[MAX_TIMERS]

The actual timers.

Definition at line 37 of file timers.cpp.

Referenced by cftimer_create(), cftimer_destroy(), cftimer_find_free_id(), cftimer_init(), and cftimer_process_timers().