ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-Fork-RPC/RPC.pm
(Generate patch)

Comparing AnyEvent-Fork-RPC/RPC.pm (file contents):
Revision 1.19 by root, Thu Apr 18 20:27:02 2013 UTC vs.
Revision 1.21 by root, Sun Apr 21 12:01:54 2013 UTC

550 undef $rw; undef $ww; # it ends here 550 undef $rw; undef $ww; # it ends here
551 551
552 if (@rcb || %rcb) { 552 if (@rcb || %rcb) {
553 $on_error->("unexpected eof"); 553 $on_error->("unexpected eof");
554 } else { 554 } else {
555 $on_destroy->(); 555 $on_destroy->()
556 if $on_destroy;
556 } 557 }
557 } elsif ($! != Errno::EAGAIN && $! != Errno::EWOULDBLOCK) { 558 } elsif ($! != Errno::EAGAIN && $! != Errno::EWOULDBLOCK) {
558 undef $rw; undef $ww; # it ends here 559 undef $rw; undef $ww; # it ends here
559 $on_error->("read: $!"); 560 $on_error->("read: $!");
560 } 561 }
576 $id = ($id == 0xffffffff ? 0 : $id) + 1; 577 $id = ($id == 0xffffffff ? 0 : $id) + 1;
577 $id = ($id == 0xffffffff ? 0 : $id) + 1 while exists $rcb{$id}; # rarely loops 578 $id = ($id == 0xffffffff ? 0 : $id) + 1 while exists $rcb{$id}; # rarely loops
578 579
579 $rcb{$id} = pop; 580 $rcb{$id} = pop;
580 581
581 $guard; # keep it alive 582 $guard if 0; # keep it alive
582 583
583 $wbuf .= pack "LL/a*", $id, &$f; 584 $wbuf .= pack "LL/a*", $id, &$f;
584 $ww ||= $fh && AE::io $fh, 1, $wcb; 585 $ww ||= $fh && AE::io $fh, 1, $wcb;
585 } 586 }
586 : sub { 587 : sub {
772 773
773Of course, this might be blocking if you pass a lot of file descriptors, 774Of course, this might be blocking if you pass a lot of file descriptors,
774so you might want to look into L<AnyEvent::FDpasser> which can handle the 775so you might want to look into L<AnyEvent::FDpasser> which can handle the
775gory details. 776gory details.
776 777
778=head1 EXCEPTIONS
779
780There are no provisions whatsoever for catching exceptions at this time -
781in the child, exeptions might kill the process, causing calls to be lost
782and the parent encountering a fatal error. In the parent, exceptions in
783the result callback will not be caught and cause undefined behaviour.
784
777=head1 SEE ALSO 785=head1 SEE ALSO
778 786
779L<AnyEvent::Fork>, to create the processes in the first place. 787L<AnyEvent::Fork>, to create the processes in the first place.
780 788
781L<AnyEvent::Fork::Pool>, to manage whole pools of processes. 789L<AnyEvent::Fork::Pool>, to manage whole pools of processes.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines