#include <eggdrop/eggdrop.h>
#include "egg_script_internal.h"
Go to the source code of this file.
Functions | |
static int | script_single_timer (int nargs, int sec, int usec, script_callback_t *callback) |
static int | script_repeat_timer (int nargs, int sec, int usec, script_callback_t *callback) |
static int | script_timers (script_var_t *retval) |
static int | script_timer_info (script_var_t *retval, int timer_id) |
static int | script_timer (int sec, int usec, script_callback_t *callback, int flags) |
Variables | |
static const char | rcsid [] = "$Id: scripttimer.c,v 1.13 2007-04-14 15:21:13 sven Exp $" |
script_command_t | script_timer_cmds [] |
static int script_repeat_timer | ( | int | nargs, | |
int | sec, | |||
int | usec, | |||
script_callback_t * | callback | |||
) | [static] |
Definition at line 56 of file scripttimer.c.
References script_timer(), and TIMER_REPEAT.
00057 { 00058 if (nargs < 3) { 00059 sec = usec; 00060 usec = 0; 00061 } 00062 00063 return script_timer(sec, usec, callback, TIMER_REPEAT); 00064 }
static int script_single_timer | ( | int | nargs, | |
int | sec, | |||
int | usec, | |||
script_callback_t * | callback | |||
) | [static] |
Definition at line 45 of file scripttimer.c.
References script_callback_b::flags, SCRIPT_CALLBACK_ONCE, and script_timer().
00046 { 00047 if (nargs < 3) { 00048 sec = usec; 00049 usec = 0; 00050 } 00051 00052 callback->flags |= SCRIPT_CALLBACK_ONCE; 00053 return script_timer(sec, usec, callback, 0); 00054 }
static int script_timer | ( | int | sec, | |
int | usec, | |||
script_callback_t * | callback, | |||
int | flags | |||
) | [static] |
Definition at line 32 of file scripttimer.c.
References script_callback_b::callback, script_callback_b::name, script_callback_b::owner, egg_timeval::sec, script_callback_b::syntax, timer_create_complex(), and egg_timeval::usec.
Referenced by script_repeat_timer(), and script_single_timer().
00033 { 00034 egg_timeval_t howlong; 00035 int id; 00036 00037 howlong.sec = sec; 00038 howlong.usec = usec; 00039 callback->syntax = (char *)malloc(1); 00040 callback->syntax[0] = 0; 00041 id = timer_create_complex(&howlong, callback->name, callback->callback, callback, flags, callback->owner); 00042 return(id); 00043 }
static int script_timer_info | ( | script_var_t * | retval, | |
int | timer_id | |||
) | [static] |
Definition at line 85 of file scripttimer.c.
References egg_timer::howlong, script_var_b::len, egg_timer::name, now, SCRIPT_ARRAY, SCRIPT_FREE, script_int(), script_list_append(), script_string(), SCRIPT_VAR, egg_timeval::sec, timer_diff(), timer_find(), timer_get_now(), egg_timer::trigger_time, script_var_b::type, and egg_timeval::usec.
00086 { 00087 egg_timeval_t start_time, diff, now; 00088 egg_timer_t *timer; 00089 00090 retval->type = SCRIPT_VAR | SCRIPT_FREE | SCRIPT_ARRAY; 00091 retval->len = 0; 00092 00093 timer = timer_find(timer_id); 00094 if (!timer) return(0); 00095 00096 timer_get_now(&now); 00097 00098 /* Name, when it started, initial timer length, 00099 how long it's run already, how long until it triggers, 00100 absolute time when it triggers. */ 00101 00102 script_list_append(retval, script_string(timer->name, -1)); 00103 00104 timer_diff(&timer->howlong, &timer->trigger_time, &start_time); 00105 script_list_append(retval, script_int(start_time.sec)); 00106 script_list_append(retval, script_int(start_time.usec)); 00107 00108 script_list_append(retval, script_int(timer->howlong.sec)); 00109 script_list_append(retval, script_int(timer->howlong.usec)); 00110 00111 timer_diff(&start_time, &now, &diff); 00112 script_list_append(retval, script_int(diff.sec)); 00113 script_list_append(retval, script_int(diff.usec)); 00114 00115 timer_diff(&now, &timer->trigger_time, &diff); 00116 script_list_append(retval, script_int(diff.sec)); 00117 script_list_append(retval, script_int(diff.usec)); 00118 00119 script_list_append(retval, script_int(timer->trigger_time.sec)); 00120 script_list_append(retval, script_int(timer->trigger_time.usec)); 00121 00122 return(0); 00123 }
static int script_timers | ( | script_var_t * | retval | ) | [static] |
Definition at line 66 of file scripttimer.c.
References egg_timer::id, script_var_b::len, egg_timer::next, NULL, SCRIPT_ARRAY, SCRIPT_FREE, SCRIPT_INTEGER, timer_list(), script_var_b::type, and script_var_b::value.
00067 { 00068 egg_timer_t *timer; 00069 int ntimers, *timers = NULL; 00070 00071 ntimers = 0; 00072 for (timer = timer_list(); timer; timer = timer->next) { 00073 timers = realloc(timers, sizeof(*timers) * (ntimers+1)); 00074 timers[ntimers] = timer->id; 00075 ntimers++; 00076 } 00077 00078 /* A malloc'd array of ints. */ 00079 retval->type = SCRIPT_ARRAY | SCRIPT_FREE | SCRIPT_INTEGER; 00080 retval->value = timers; 00081 retval->len = ntimers; 00082 return(0); 00083 }
const char rcsid[] = "$Id: scripttimer.c,v 1.13 2007-04-14 15:21:13 sven Exp $" [static] |
Definition at line 21 of file scripttimer.c.
Initial value:
{ {"", "timer", script_single_timer, NULL, 2, "iic", "seconds ?microseconds? callback", SCRIPT_INTEGER, SCRIPT_VAR_ARGS | SCRIPT_VAR_FRONT | SCRIPT_PASS_COUNT}, {"", "rtimer", script_repeat_timer, NULL, 2, "iic", "seconds ?microseconds? callback", SCRIPT_INTEGER, SCRIPT_VAR_ARGS | SCRIPT_VAR_FRONT | SCRIPT_PASS_COUNT}, {"", "killtimer", timer_destroy, NULL, 1, "i", "timer-id", SCRIPT_INTEGER, 0}, {"", "timers", script_timers, NULL, 0, "", "", 0, SCRIPT_PASS_RETVAL}, {"", "timer_info", script_timer_info, NULL, 1, "i", "timer-id", 0, SCRIPT_PASS_RETVAL}, {0} }
Definition at line 125 of file scripttimer.c.