… | |
… | |
2 | # IOM_CLASS constants |
2 | # IOM_CLASS constants |
3 | ############################################################################# |
3 | ############################################################################# |
4 | |
4 | |
5 | BOOT: |
5 | BOOT: |
6 | { |
6 | { |
|
|
7 | { |
7 | HV *stash = gv_stashpv ("IOM_CLASS", 1); |
8 | HV *stash = gv_stashpv ("IOM_CLASS", 1); |
8 | SV *baseclass = newSVpv ("IOM_CLASS::watcher", 0); |
9 | SV *baseclass = newSVpv ("IOM_CLASS::watcher", 0); |
9 | |
10 | |
10 | static const struct { |
11 | static const struct { |
11 | const char *name; |
12 | const char *name; |
12 | IV iv; |
13 | IV iv; |
13 | } *civ, const_iv[] = { |
14 | } *civ, iom_const_iv[] = { |
14 | # define const_iv(name) { # name, (IV)name } |
15 | # define iom_const_iv(name) { # name, (IV)name } |
15 | const_iv (EVENT_NONE), |
16 | iom_const_iv (EVENT_NONE), |
16 | const_iv (EVENT_READ), |
17 | iom_const_iv (EVENT_READ), |
17 | const_iv (EVENT_WRITE), |
18 | iom_const_iv (EVENT_WRITE), |
|
|
19 | # undef iom_const |
18 | }; |
20 | }; |
19 | |
21 | |
20 | for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; ) |
22 | for (civ = iom_const_iv + sizeof (iom_const_iv) / sizeof (iom_const_iv [0]); civ-- > iom_const_iv; ) |
21 | newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); |
23 | newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); |
22 | |
24 | |
23 | /* slightly dirty to put the same scalar into all those arrays, but */ |
25 | /* slightly dirty to put the same scalar into all those arrays, but */ |
24 | /* we do not expect users to modify them anyways */ |
26 | /* we do not expect users to modify them anyways */ |
25 | av_push (get_av ("IOM_CLASS" "::timer::ISA", 1), SvREFCNT_inc (baseclass)); |
27 | av_push (get_av ("IOM_CLASS" "::timer::ISA", 1), SvREFCNT_inc (baseclass)); |
26 | av_push (get_av ("IOM_CLASS" "::iow::ISA", 1), SvREFCNT_inc (baseclass)); |
28 | av_push (get_av ("IOM_CLASS" "::iow::ISA", 1), SvREFCNT_inc (baseclass)); |
27 | av_push (get_av ("IOM_CLASS" "::pw::ISA", 1), SvREFCNT_inc (baseclass)); |
29 | av_push (get_av ("IOM_CLASS" "::pw::ISA", 1), SvREFCNT_inc (baseclass)); |
28 | av_push (get_av ("IOM_CLASS" "::iw::ISA", 1), SvREFCNT_inc (baseclass)); |
30 | av_push (get_av ("IOM_CLASS" "::iw::ISA", 1), SvREFCNT_inc (baseclass)); |
29 | |
31 | |
30 | SvREFCNT_dec (baseclass); |
32 | SvREFCNT_dec (baseclass); |
|
|
33 | } |
31 | } |
34 | } |
32 | |
35 | |
33 | ############################################################################# |
36 | ############################################################################# |
34 | # IOM_CLASS::watcher |
37 | # IOM_CLASS::watcher |
35 | ############################################################################# |
38 | ############################################################################# |
36 | |
39 | |
37 | MODULE = IOM_MODULE PACKAGE = IOM_CLASS::watcher |
40 | MODULE = IOM_MODULE PACKAGE = IOM_CLASS::watcher |
38 | |
41 | |
39 | CHAINED |
42 | IOM_CHAINED |
40 | perl_watcher::cb (SV *cb) |
43 | perl_watcher::cb (SV *cb) |
41 | CODE: |
44 | CODE: |
42 | THIS->cb (cb); |
45 | THIS->cb (cb); |
43 | OUTPUT: |
46 | OUTPUT: |
44 | RETVAL |
47 | RETVAL |
… | |
… | |
64 | CODE: |
67 | CODE: |
65 | RETVAL = THIS->at; |
68 | RETVAL = THIS->at; |
66 | OUTPUT: |
69 | OUTPUT: |
67 | RETVAL |
70 | RETVAL |
68 | |
71 | |
69 | CHAINED |
72 | IOM_CHAINED |
70 | timer::interval (NV interval) |
73 | timer::interval (NV interval) |
71 | CODE: |
74 | CODE: |
72 | THIS->interval = interval; |
75 | THIS->interval = interval; |
73 | OUTPUT: |
76 | OUTPUT: |
74 | RETVAL |
77 | RETVAL |
75 | |
78 | |
76 | CHAINED |
79 | IOM_CHAINED |
77 | timer::set (NV tstamp) |
80 | timer::set (NV tstamp) |
78 | CODE: |
81 | CODE: |
79 | THIS->set (tstamp); |
82 | THIS->set (tstamp); |
80 | OUTPUT: |
83 | OUTPUT: |
81 | RETVAL |
84 | RETVAL |
82 | |
85 | |
83 | CHAINED |
86 | IOM_CHAINED |
84 | timer::start (NV tstamp = THIS->at) |
87 | timer::start (NV tstamp = THIS->at) |
85 | CODE: |
88 | CODE: |
86 | THIS->start (tstamp); |
89 | THIS->start (tstamp); |
87 | OUTPUT: |
90 | OUTPUT: |
88 | RETVAL |
91 | RETVAL |
89 | |
92 | |
90 | CHAINED |
93 | IOM_CHAINED |
91 | timer::after (NV delay) |
94 | timer::after (NV delay) |
92 | CODE: |
95 | CODE: |
93 | THIS->start (NOW + delay); |
96 | THIS->start (NOW + delay); |
94 | OUTPUT: |
97 | OUTPUT: |
95 | RETVAL |
98 | RETVAL |
96 | |
99 | |
97 | CHAINED |
100 | IOM_CHAINED |
98 | timer::stop () |
101 | timer::stop () |
99 | CODE: |
102 | CODE: |
100 | THIS->stop (); |
103 | THIS->stop (); |
101 | OUTPUT: |
104 | OUTPUT: |
102 | RETVAL |
105 | RETVAL |
… | |
… | |
117 | RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::iow"); |
120 | RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::iow"); |
118 | w->self = (HV *)SvRV (RETVAL); |
121 | w->self = (HV *)SvRV (RETVAL); |
119 | OUTPUT: |
122 | OUTPUT: |
120 | RETVAL |
123 | RETVAL |
121 | |
124 | |
122 | CHAINED |
125 | IOM_CHAINED |
123 | iow::fd (int fd) |
126 | iow::fd (int fd) |
124 | CODE: |
127 | CODE: |
125 | THIS->fd = fd; |
128 | THIS->fd = fd; |
126 | OUTPUT: |
129 | OUTPUT: |
127 | RETVAL |
130 | RETVAL |
128 | |
131 | |
129 | CHAINED |
132 | IOM_CHAINED |
130 | iow::events (short events) |
133 | iow::events (short events) |
131 | CODE: |
134 | CODE: |
132 | THIS->events = events; |
135 | THIS->events = events; |
133 | OUTPUT: |
136 | OUTPUT: |
134 | RETVAL |
137 | RETVAL |
135 | |
138 | |
136 | CHAINED |
139 | IOM_CHAINED |
137 | iow::start () |
140 | iow::start () |
138 | CODE: |
141 | CODE: |
139 | THIS->start (); |
142 | THIS->start (); |
140 | OUTPUT: |
143 | OUTPUT: |
141 | RETVAL |
144 | RETVAL |
142 | |
145 | |
143 | CHAINED |
146 | IOM_CHAINED |
144 | iow::stop () |
147 | iow::stop () |
145 | CODE: |
148 | CODE: |
146 | THIS->stop (); |
149 | THIS->stop (); |
147 | OUTPUT: |
150 | OUTPUT: |
148 | RETVAL |
151 | RETVAL |
… | |
… | |
163 | RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::iw"); |
166 | RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::iw"); |
164 | w->self = (HV *)SvRV (RETVAL); |
167 | w->self = (HV *)SvRV (RETVAL); |
165 | OUTPUT: |
168 | OUTPUT: |
166 | RETVAL |
169 | RETVAL |
167 | |
170 | |
168 | CHAINED |
171 | IOM_CHAINED |
169 | iw::start () |
172 | iw::start () |
170 | CODE: |
173 | CODE: |
171 | THIS->start (); |
174 | THIS->start (); |
172 | OUTPUT: |
175 | OUTPUT: |
173 | RETVAL |
176 | RETVAL |
174 | |
177 | |
175 | CHAINED |
178 | IOM_CHAINED |
176 | iw::stop () |
179 | iw::stop () |
177 | CODE: |
180 | CODE: |
178 | THIS->stop (); |
181 | THIS->stop (); |
179 | OUTPUT: |
182 | OUTPUT: |
180 | RETVAL |
183 | RETVAL |
… | |
… | |
195 | RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::pw"); |
198 | RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::pw"); |
196 | w->self = (HV *)SvRV (RETVAL); |
199 | w->self = (HV *)SvRV (RETVAL); |
197 | OUTPUT: |
200 | OUTPUT: |
198 | RETVAL |
201 | RETVAL |
199 | |
202 | |
200 | CHAINED |
203 | IOM_CHAINED |
201 | pw::start (int pid) |
204 | pw::start (int pid) |
202 | CODE: |
205 | CODE: |
203 | THIS->start (pid); |
206 | THIS->start (pid); |
204 | OUTPUT: |
207 | OUTPUT: |
205 | RETVAL |
208 | RETVAL |
206 | |
209 | |
207 | CHAINED |
210 | IOM_CHAINED |
208 | pw::stop () |
211 | pw::stop () |
209 | CODE: |
212 | CODE: |
210 | THIS->stop (); |
213 | THIS->stop (); |
211 | OUTPUT: |
214 | OUTPUT: |
212 | RETVAL |
215 | RETVAL |