modules/script/scripttimer.c File Reference

#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 []


Function Documentation

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 }


Variable Documentation

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.


Generated on Sun Nov 30 18:43:36 2008 for eggdrop1.9 by  doxygen 1.5.6