die "SysV messages are not implemented yet. Send email to perl-loop@perl.org if you think this is a problem. Thanks!\n"; package Event::msg; use Event; use IPC::Msg; register Event; my %MSG; my $LABEL = "msg000000"; sub new { use attrs qw(locked method); my $class = shift; my %arg = @_; my $msg = $arg{'-msg'}; my $cb = $arg{'-callback'}; croak 'Event->msg( -msg => $msg, -callback => $coderef)' unless(UNIVERSAL::isa($msg,'IPC::Msg') && UNIVERSAL::isa($cb,'CODE')); my $obj = { callback => $cb, msg => $msg, label => $label++ }, $class; $msg{$obj->{'label'}} = $obj; $obj; } sub cancel { my $self = shift; delete $msg{$self->{'label'}}; } sub prepare { 3600 } sub check { my $obj; my @del = (); foreach $obj (values %msg) { my $ds = $obj->{'msg'}->stat; if($ds->qnum && $ds->lspid != $$) my($o,$cb,$msg) = ($obj,$obj->{'callback'},$obj->{'msg'}); Event->queueEvent( sub { $cb->($o,$msg) } ); } } 1; } 1;