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

Comparing EV/EV.xs (file contents):
Revision 1.16 by root, Wed Oct 31 10:53:54 2007 UTC vs.
Revision 1.19 by root, Wed Oct 31 11:59:54 2007 UTC

210 } 210 }
211 211
212 LEAVE; 212 LEAVE;
213} 213}
214#endif 214#endif
215
216#define CHECK_REPEAT(repeat) if (repeat < 0.) \
217 croak (# repeat " value must be >= 0");
215 218
216///////////////////////////////////////////////////////////////////////////// 219/////////////////////////////////////////////////////////////////////////////
217// XS interface functions 220// XS interface functions
218 221
219MODULE = EV PACKAGE = EV PREFIX = ev_ 222MODULE = EV PACKAGE = EV PREFIX = ev_
273 evapi.loop = ev_loop; 276 evapi.loop = ev_loop;
274 evapi.io_start = evio_start; 277 evapi.io_start = evio_start;
275 evapi.io_stop = evio_stop; 278 evapi.io_stop = evio_stop;
276 evapi.timer_start = evtimer_start; 279 evapi.timer_start = evtimer_start;
277 evapi.timer_stop = evtimer_stop; 280 evapi.timer_stop = evtimer_stop;
281 evapi.timer_again = evtimer_again;
278 evapi.periodic_start = evperiodic_start; 282 evapi.periodic_start = evperiodic_start;
279 evapi.periodic_stop = evperiodic_stop; 283 evapi.periodic_stop = evperiodic_stop;
280 evapi.signal_start = evsignal_start; 284 evapi.signal_start = evsignal_start;
281 evapi.signal_stop = evsignal_stop; 285 evapi.signal_stop = evsignal_stop;
282 evapi.idle_start = evidle_start; 286 evapi.idle_start = evidle_start;
310void ev_loop_done (int value = 1) 314void ev_loop_done (int value = 1)
311 CODE: 315 CODE:
312 ev_loop_done = value; 316 ev_loop_done = value;
313 317
314struct ev_io *io (SV *fh, int events, SV *cb) 318struct ev_io *io (SV *fh, int events, SV *cb)
319 PROTOTYPE: $$&
315 ALIAS: 320 ALIAS:
316 io_ns = 1 321 io_ns = 1
317 CODE: 322 CODE:
318 RETVAL = e_new (sizeof (struct ev_io), cb); 323 RETVAL = e_new (sizeof (struct ev_io), cb);
319 RETVAL->fh = newSVsv (fh); 324 RETVAL->fh = newSVsv (fh);
321 if (!ix) evio_start (RETVAL); 326 if (!ix) evio_start (RETVAL);
322 OUTPUT: 327 OUTPUT:
323 RETVAL 328 RETVAL
324 329
325struct ev_timer *timer (NV after, NV repeat, SV *cb) 330struct ev_timer *timer (NV after, NV repeat, SV *cb)
331 PROTOTYPE: $$&
326 ALIAS: 332 ALIAS:
327 timer_ns = 1 333 timer_ns = 1
334 INIT:
335 CHECK_REPEAT (repeat);
328 CODE: 336 CODE:
329 RETVAL = e_new (sizeof (struct ev_timer), cb); 337 RETVAL = e_new (sizeof (struct ev_timer), cb);
330 evtimer_set (RETVAL, after, repeat); 338 evtimer_set (RETVAL, after, repeat);
331 if (!ix) evtimer_start (RETVAL); 339 if (!ix) evtimer_start (RETVAL);
332 OUTPUT: 340 OUTPUT:
333 RETVAL 341 RETVAL
334 342
335struct ev_periodic *periodic (NV at, NV interval, SV *cb) 343struct ev_periodic *periodic (NV at, NV interval, SV *cb)
344 PROTOTYPE: $$&
336 ALIAS: 345 ALIAS:
337 periodic_ns = 1 346 periodic_ns = 1
347 INIT:
348 CHECK_REPEAT (interval);
338 CODE: 349 CODE:
339 RETVAL = e_new (sizeof (struct ev_periodic), cb); 350 RETVAL = e_new (sizeof (struct ev_periodic), cb);
340 evperiodic_set (RETVAL, at, interval); 351 evperiodic_set (RETVAL, at, interval);
341 if (!ix) evperiodic_start (RETVAL); 352 if (!ix) evperiodic_start (RETVAL);
342 OUTPUT: 353 OUTPUT:
343 RETVAL 354 RETVAL
344 355
345struct ev_signal *signal (Signal signum, SV *cb) 356struct ev_signal *signal (Signal signum, SV *cb)
357 PROTOTYPE: $&
346 ALIAS: 358 ALIAS:
347 signal_ns = 1 359 signal_ns = 1
348 CODE: 360 CODE:
349 RETVAL = e_new (sizeof (struct ev_signal), cb); 361 RETVAL = e_new (sizeof (struct ev_signal), cb);
350 evsignal_set (RETVAL, signum); 362 evsignal_set (RETVAL, signum);
351 if (!ix) evsignal_start (RETVAL); 363 if (!ix) evsignal_start (RETVAL);
352 OUTPUT: 364 OUTPUT:
353 RETVAL 365 RETVAL
354 366
355struct ev_idle *idle (SV *cb) 367struct ev_idle *idle (SV *cb)
368 PROTOTYPE: &
356 ALIAS: 369 ALIAS:
357 idle_ns = 1 370 idle_ns = 1
358 CODE: 371 CODE:
359 RETVAL = e_new (sizeof (struct ev_idle), cb); 372 RETVAL = e_new (sizeof (struct ev_idle), cb);
360 evidle_set (RETVAL); 373 evidle_set (RETVAL);
361 if (!ix) evidle_start (RETVAL); 374 if (!ix) evidle_start (RETVAL);
362 OUTPUT: 375 OUTPUT:
363 RETVAL 376 RETVAL
364 377
365struct ev_check *check (SV *cb) 378struct ev_check *check (SV *cb)
379 PROTOTYPE: &
366 ALIAS: 380 ALIAS:
367 check_ns = 1 381 check_ns = 1
368 CODE: 382 CODE:
369 RETVAL = e_new (sizeof (struct ev_check), cb); 383 RETVAL = e_new (sizeof (struct ev_check), cb);
370 evcheck_set (RETVAL); 384 evcheck_set (RETVAL);
465MODULE = EV PACKAGE = EV::Time 479MODULE = EV PACKAGE = EV::Time
466 480
467MODULE = EV PACKAGE = EV::Timer PREFIX = evtimer_ 481MODULE = EV PACKAGE = EV::Timer PREFIX = evtimer_
468 482
469void evtimer_start (struct ev_timer *w) 483void evtimer_start (struct ev_timer *w)
484 INIT:
485 CHECK_REPEAT (w->repeat);
470 486
471void evtimer_stop (struct ev_timer *w) 487void evtimer_stop (struct ev_timer *w)
472 488
489void evtimer_again (struct ev_timer *w)
490 INIT:
491 CHECK_REPEAT (w->repeat);
492
473void set (struct ev_timer *w, NV after, NV repeat = 0.) 493void set (struct ev_timer *w, NV after, NV repeat = 0.)
494 INIT:
495 CHECK_REPEAT (repeat);
474 CODE: 496 CODE:
475{ 497{
476 int active = w->active; 498 int active = w->active;
477 if (active) evtimer_stop (w); 499 if (active) evtimer_stop (w);
478 evtimer_set (w, after, repeat); 500 evtimer_set (w, after, repeat);
480} 502}
481 503
482MODULE = EV PACKAGE = EV::Periodic PREFIX = evperiodic_ 504MODULE = EV PACKAGE = EV::Periodic PREFIX = evperiodic_
483 505
484void evperiodic_start (struct ev_periodic *w) 506void evperiodic_start (struct ev_periodic *w)
507 INIT:
508 CHECK_REPEAT (w->interval);
485 509
486void evperiodic_stop (struct ev_periodic *w) 510void evperiodic_stop (struct ev_periodic *w)
487 511
488void set (struct ev_periodic *w, NV at, NV interval = 0.) 512void set (struct ev_periodic *w, NV at, NV interval = 0.)
513 INIT:
514 CHECK_REPEAT (interval);
489 CODE: 515 CODE:
490{ 516{
491 int active = w->active; 517 int active = w->active;
492 if (active) evperiodic_stop (w); 518 if (active) evperiodic_stop (w);
493 evperiodic_set (w, at, interval); 519 evperiodic_set (w, at, interval);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines