Event

 view release on metacpan or  search on metacpan

c/typemap.c  view on Meta::CPAN

	src->mysv = wrap_genericsrc(src, pe_genericsrc_stash, 0);
    }
    return SvREFCNT_inc(sv_2mortal(src->mysv));
}

static void* sv_2genericsrc(SV *sv) {
    return sv_2thing(MG_GENERICSRC_CODE, sv);
}

/*
  Events have a short lifetime.  mysv is kept alive until the event
  has been serviced.  Once perl finally releases mysv then the event
  is deallocated (or, more likely, recycled).
*/

SV *event_2sv(pe_event *ev) { /**MAKE FAST**/
    if (!ev->mysv) {
	SV *rv = newSV(0);
	SV *sv = newSVrv(rv,0);
	sv_bless(rv, ev->vtbl->stash);
	sv_setiv(sv, PTR2IV(ev));

demo/readline.t  view on Meta::CPAN


# store output buffer in a scalar (for print)
my $outstream=$attribs->{'outstream'};

# install STDIN handler
Event->io(
	  desc   => 'STDIN handler',                             # description;
	  fd     => \*STDIN,                                     # handle;
	  poll   => 'r',	                                 # wait for income;
	  cb     => sub {&{$attribs->{'callback_read_char'}}()}, # callback;
	  repeat => 1,                                           # keep alive after events;
	 );

# install an additional idle task just to demonstrate that the loop works fine, if necessary
Event->idle(
	    desc   => 'idle task',               # description;
	    prio   => 5,                         # low priority;
	    min    => 1,                         # minimal pending time in seconds;
	    max    => 5,                         # invoked after at least this number of seconds;
	    cb     => sub {print $outstream "\n\n[Trace] Idle task is running.\n\n"}, # callback;
	    repeat => 1,                         # keep alive after events;
	   ) if exists $options{'idle'};

# enter event loop
Event::loop();


# handle a line completely read
sub processLine
 {
  # get line



( run in 1.558 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )