ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/event.c
Revision: 4117
Committed: Tue Jul 1 16:51:11 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 2816 byte(s)
Log Message:
- event.c:event_run(): removed unused variable

File Contents

# User Rev Content
1 adx 30 /*
2     * ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
3     * event.c: Event functions.
4     *
5 michael 2916 * Copyright (c) 1998-2000 Regents of the University of California
6     * Copyright (c) 2000-2014 ircd-hybrid development team
7 adx 30 *
8 knight 31 * $Id$
9 adx 30 */
10    
11     #include "stdinc.h"
12 michael 1011 #include "list.h"
13 adx 30 #include "ircd.h"
14     #include "event.h"
15     #include "client.h"
16     #include "send.h"
17     #include "memory.h"
18 michael 1309 #include "log.h"
19 adx 30 #include "numeric.h"
20 michael 2680 #include "rng_mt.h"
21 adx 30
22 michael 4094 static dlink_list events;
23 michael 2680
24 michael 4094 void
25     event_add(struct event *ev, void *data)
26     {
27     dlink_node *node;
28 adx 30
29 michael 4094 event_delete(ev);
30 michael 3599
31 michael 4094 ev->data = data;
32     ev->next = CurrentTime + ev->when;
33     ev->enabled = 1;
34 michael 3599
35 michael 4094 DLINK_FOREACH(node, events.head)
36     {
37     struct event *e = node->data;
38 michael 3599
39 michael 4094 if (e->next > ev->next)
40 adx 30 {
41 michael 4094 dlinkAddBefore(node, ev, &ev->node, &events);
42 adx 30 return;
43     }
44     }
45    
46 michael 4094 dlinkAddTail(ev, &ev->node, &events);
47 adx 30 }
48    
49     void
50 michael 4094 event_addish(struct event *ev, void *data)
51 adx 30 {
52 michael 4094 if (ev->when >= 3)
53 adx 30 {
54 michael 4094 const time_t two_third = (2 * ev->when) / 3;
55     ev->when = two_third + ((genrand_int32() % 1000) * two_third) / 1000;
56 adx 30 /*
57     * XXX I hate the above magic, I don't even know if its right.
58     * Grr. -- adrian
59     */
60     }
61    
62 michael 4094 event_add(ev, data);
63 adx 30 }
64    
65     void
66 michael 4094 event_delete(struct event *ev)
67 adx 30 {
68 michael 4094 if (!ev->enabled)
69     return;
70    
71     dlinkDelete(&ev->node, &events);
72     ev->enabled = 0;
73 adx 30 }
74    
75 michael 4094 void
76     event_run(void)
77 adx 30 {
78 michael 4094 static time_t last = 0;
79     size_t len = 0;
80 adx 30
81 michael 4094 if (last == CurrentTime)
82     return;
83     last = CurrentTime;
84    
85     len = dlink_list_length(&events);
86     while (len-- && dlink_list_length(&events))
87     {
88     struct event *e = events.head->data;
89    
90 michael 4099 if (e->next > CurrentTime)
91 michael 4094 break;
92    
93     event_delete(e);
94    
95     e->handler(e->data);
96    
97     if (!e->oneshot)
98     event_add(e, e->data);
99     }
100 adx 30 }
101    
102     /*
103 michael 4094 * void set_back_events(time_t by)
104     * Input: Time to set back events by.
105     * Output: None.
106     * Side-effects: Sets back all events by "by" seconds.
107 adx 30 */
108     void
109 michael 4094 set_back_events(time_t by)
110 adx 30 {
111 michael 4094 dlink_node *node;
112    
113     DLINK_FOREACH(node, events.head)
114     {
115     struct event *ev = node->data;
116     ev->next -= by;
117     }
118 adx 30 }
119    
120     /*
121     * void show_events(struct Client *source_p)
122     *
123     * Input: Client requesting the event
124     * Output: List of events
125     * Side Effects: None
126     */
127     void
128     show_events(struct Client *source_p)
129     {
130 michael 4094 const dlink_node *node;
131 adx 30
132 michael 3589 sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
133     "E :Operation Next Execution");
134     sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
135     "E :-------------------------------------------");
136 adx 30
137 michael 4094 DLINK_FOREACH(node, events.head)
138     {
139     const struct event *ev = node->data;
140 adx 30
141 michael 4094 sendto_one_numeric(source_p, &me, RPL_STATSDEBUG|SND_EXPLICIT,
142     "E :%-28s %-4d seconds",
143     ev->name,
144     (int)(ev->next - CurrentTime));
145 adx 30 }
146     }
147 michael 4094

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision