… | |
… | |
178 | EXTEND (SP, 2); |
178 | EXTEND (SP, 2); |
179 | PUSHs (sv_2mortal (e_self (ev))); |
179 | PUSHs (sv_2mortal (e_self (ev))); |
180 | PUSHs (sv_2mortal (newSViv (events))); |
180 | PUSHs (sv_2mortal (newSViv (events))); |
181 | PUTBACK; |
181 | PUTBACK; |
182 | call_sv (ev->cb, G_DISCARD | G_VOID | G_EVAL); |
182 | call_sv (ev->cb, G_DISCARD | G_VOID | G_EVAL); |
183 | /*TODO: if err, call some logging function */ |
|
|
184 | |
183 | |
185 | if (ev->interval && !ev->active) |
184 | if (ev->interval && !ev->active) |
186 | e_start (ev); |
185 | e_start (ev); |
187 | |
186 | |
188 | FREETMPS; |
187 | FREETMPS; |
|
|
188 | |
|
|
189 | if (SvTRUE (ERRSV)) |
|
|
190 | { |
|
|
191 | PUSHMARK (SP); |
|
|
192 | PUTBACK; |
|
|
193 | call_sv (get_sv ("EV::DIED", 1), G_DISCARD | G_VOID | G_EVAL | G_KEEPERR); |
|
|
194 | } |
|
|
195 | |
189 | LEAVE; |
196 | LEAVE; |
190 | } |
197 | } |
191 | |
198 | |
192 | ///////////////////////////////////////////////////////////////////////////// |
199 | ///////////////////////////////////////////////////////////////////////////// |
193 | // DNS |
200 | // DNS |
… | |
… | |
228 | |
235 | |
229 | PUTBACK; |
236 | PUTBACK; |
230 | call_sv (sv_2mortal (cb), G_DISCARD | G_VOID | G_EVAL); |
237 | call_sv (sv_2mortal (cb), G_DISCARD | G_VOID | G_EVAL); |
231 | |
238 | |
232 | FREETMPS; |
239 | FREETMPS; |
|
|
240 | |
|
|
241 | if (SvTRUE (ERRSV)) |
|
|
242 | { |
|
|
243 | PUSHMARK (SP); |
|
|
244 | PUTBACK; |
|
|
245 | call_sv (get_sv ("EV::DIED", 1), G_DISCARD | G_VOID | G_EVAL | G_KEEPERR); |
|
|
246 | } |
|
|
247 | |
233 | LEAVE; |
248 | LEAVE; |
234 | } |
249 | } |
235 | |
250 | |
236 | ///////////////////////////////////////////////////////////////////////////// |
251 | ///////////////////////////////////////////////////////////////////////////// |
237 | // XS interface functions |
252 | // XS interface functions |
… | |
… | |
535 | CODE: |
550 | CODE: |
536 | { |
551 | { |
537 | STRLEN len; |
552 | STRLEN len; |
538 | char *data = SvPVbyte (addr, len); |
553 | char *data = SvPVbyte (addr, len); |
539 | if (len != (ix ? 16 : 4)) |
554 | if (len != (ix ? 16 : 4)) |
540 | croak ("ipv4/ipv6 address to resolve must be given as 4/16 byte octet string"); |
555 | croak ("ipv4/ipv6 address to be resolved must be given as 4/16 byte octet string"); |
541 | |
556 | |
542 | RETVAL = ix |
557 | RETVAL = ix |
543 | ? evdns_resolve_reverse_ipv6 ((struct in6_addr *)data, flags, dns_cb, (void *)SvREFCNT_inc (cb)) |
558 | ? evdns_resolve_reverse_ipv6 ((struct in6_addr *)data, flags, dns_cb, (void *)SvREFCNT_inc (cb)) |
544 | : evdns_resolve_reverse ((struct in_addr *)data, flags, dns_cb, (void *)SvREFCNT_inc (cb)); |
559 | : evdns_resolve_reverse ((struct in_addr *)data, flags, dns_cb, (void *)SvREFCNT_inc (cb)); |
545 | } |
560 | } |