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