ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.xs
(Generate patch)

Comparing EV/EV.xs (file contents):
Revision 1.112 by root, Tue May 20 23:49:41 2008 UTC vs.
Revision 1.114 by root, Sat Jul 12 22:19:22 2008 UTC

143} 143}
144 144
145static void * 145static void *
146e_new (int size, SV *cb_sv, SV *loop) 146e_new (int size, SV *cb_sv, SV *loop)
147{ 147{
148 SV *cv = e_get_cv (cb_sv); 148 SV *cv = cb_sv ? e_get_cv (cb_sv) : 0;
149 ev_watcher *w; 149 ev_watcher *w;
150 SV *self = NEWSV (0, size); 150 SV *self = NEWSV (0, size);
151 SvPOK_only (self); 151 SvPOK_only (self);
152 SvCUR_set (self, size); 152 SvCUR_set (self, size);
153 153
154 w = (ev_watcher *)SvPVX (self); 154 w = (ev_watcher *)SvPVX (self);
155 155
156 ev_init (w, e_cb); 156 ev_init (w, cv ? e_cb : 0);
157 157
158 w->loop = SvREFCNT_inc (SvRV (loop)); 158 w->loop = SvREFCNT_inc (SvRV (loop));
159 w->e_flags = WFLAG_KEEPALIVE; 159 w->e_flags = WFLAG_KEEPALIVE;
160 w->data = 0; 160 w->data = 0;
161 w->fh = 0; 161 w->fh = 0;
642 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval); 642 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval);
643 if (!ix) START (stat, RETVAL); 643 if (!ix) START (stat, RETVAL);
644 OUTPUT: 644 OUTPUT:
645 RETVAL 645 RETVAL
646 646
647ev_embed *embed (struct ev_loop *loop, SV *cb = &PL_sv_undef) 647ev_embed *embed (struct ev_loop *loop, SV *cb = 0)
648 ALIAS: 648 ALIAS:
649 embed_ns = 1 649 embed_ns = 1
650 CODE: 650 CODE:
651{ 651{
652 if (!(ev_backend (loop) & ev_embeddable_backends ())) 652 if (!(ev_backend (loop) & ev_embeddable_backends ()))
653 croak ("passed loop is not embeddable via EV::embed,"); 653 croak ("passed loop is not embeddable via EV::embed,");
654 654
655 RETVAL = e_new (sizeof (ev_embed), cb, default_loop_sv); 655 RETVAL = e_new (sizeof (ev_embed), cb, default_loop_sv);
656 RETVAL->fh = newSVsv (ST (0)); 656 RETVAL->fh = newSVsv (ST (0));
657 ev_embed_set (RETVAL, loop); 657 ev_embed_set (RETVAL, loop);
658
659 if (!SvOK (cb)) ev_set_cb (RETVAL, 0);
660
661 if (!ix) START (embed, RETVAL); 658 if (!ix) START (embed, RETVAL);
662} 659}
663 OUTPUT: 660 OUTPUT:
664 RETVAL 661 RETVAL
665 662
1208 if (loop != evapi.default_loop) /* global destruction sucks */ 1205 if (loop != evapi.default_loop) /* global destruction sucks */
1209 ev_loop_destroy (loop); 1206 ev_loop_destroy (loop);
1210 1207
1211void ev_loop_fork (struct ev_loop *loop) 1208void ev_loop_fork (struct ev_loop *loop)
1212 1209
1210void ev_loop_verify (struct ev_loop *loop)
1211
1213NV ev_now (struct ev_loop *loop) 1212NV ev_now (struct ev_loop *loop)
1214 1213
1215void ev_set_io_collect_interval (struct ev_loop *loop, NV interval) 1214void ev_set_io_collect_interval (struct ev_loop *loop, NV interval)
1216 1215
1217void ev_set_timeout_collect_interval (struct ev_loop *loop, NV interval) 1216void ev_set_timeout_collect_interval (struct ev_loop *loop, NV interval)
1362 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval); 1361 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval);
1363 if (!ix) START (stat, RETVAL); 1362 if (!ix) START (stat, RETVAL);
1364 OUTPUT: 1363 OUTPUT:
1365 RETVAL 1364 RETVAL
1366 1365
1367ev_embed *embed (struct ev_loop *loop, struct ev_loop *other, SV *cb = &PL_sv_undef) 1366ev_embed *embed (struct ev_loop *loop, struct ev_loop *other, SV *cb = 0)
1368 ALIAS: 1367 ALIAS:
1369 embed_ns = 1 1368 embed_ns = 1
1370 CODE: 1369 CODE:
1371{ 1370{
1372 if (!(ev_backend (other) & ev_embeddable_backends ())) 1371 if (!(ev_backend (other) & ev_embeddable_backends ()))
1373 croak ("passed loop is not embeddable via EV::embed,"); 1372 croak ("passed loop is not embeddable via EV::embed,");
1374 1373
1375 RETVAL = e_new (sizeof (ev_embed), cb, ST (0)); 1374 RETVAL = e_new (sizeof (ev_embed), cb, ST (0));
1376 RETVAL->fh = newSVsv (ST (1)); 1375 RETVAL->fh = newSVsv (ST (1));
1377 ev_embed_set (RETVAL, other); 1376 ev_embed_set (RETVAL, other);
1378
1379 if (!SvOK (cb)) ev_set_cb (RETVAL, 0);
1380
1381 if (!ix) START (embed, RETVAL); 1377 if (!ix) START (embed, RETVAL);
1382} 1378}
1383 OUTPUT: 1379 OUTPUT:
1384 RETVAL 1380 RETVAL
1385 1381

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines