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

Comparing AnyEvent-MP/MP.pm (file contents):
Revision 1.132 by root, Sat Mar 10 20:34:11 2012 UTC vs.
Revision 1.133 by root, Mon Mar 12 10:34:06 2012 UTC

399=cut 399=cut
400 400
401sub rcv($@); 401sub rcv($@);
402 402
403my $KILME = sub { 403my $KILME = sub {
404 die "received message on port without callback"; 404 (my $tag = substr $_[0], 0, 30) =~ s/([\x20-\x7e])/./g;
405 kil $SELF, unhandled_message => "no callback set for message (first element $tag)";
405}; 406};
406 407
407sub port(;&) { 408sub port(;&) {
408 my $id = $UNIQ . ++$ID; 409 my $id = $UNIQ . ++$ID;
409 my $port = "$NODE#$id"; 410 my $port = "$NODE#$id";
421 422
422The global C<$SELF> (exported by this module) contains C<$port> while 423The global C<$SELF> (exported by this module) contains C<$port> while
423executing the callback. Runtime errors during callback execution will 424executing the callback. Runtime errors during callback execution will
424result in the port being C<kil>ed. 425result in the port being C<kil>ed.
425 426
426The default callback received all messages not matched by a more specific 427The default callback receives all messages not matched by a more specific
427C<tag> match. 428C<tag> match.
428 429
429=item rcv $local_port, tag => $callback->(@msg_without_tag), ... 430=item rcv $local_port, tag => $callback->(@msg_without_tag), ...
430 431
431Register (or replace) callbacks to be called on messages starting with the 432Register (or replace) callbacks to be called on messages starting with the
732will be reported as reason C<< die => $@ >>. 733will be reported as reason C<< die => $@ >>.
733 734
734Transport/communication errors are reported as C<< transport_error => 735Transport/communication errors are reported as C<< transport_error =>
735$message >>. 736$message >>.
736 737
737=cut 738Common idioms:
739
740 # silently remove yourself, do not kill linked ports
741 kil $SELF;
742
743 # report a failure in some detail
744 kil $SELF, failure_mode_1 => "it failed with too high temperature";
745
746 # do not waste much time with killing, just die when something goes wrong
747 open my $fh, "<file"
748 or die "file: $!";
738 749
739=item $port = spawn $node, $initfunc[, @initdata] 750=item $port = spawn $node, $initfunc[, @initdata]
740 751
741Creates a port on the node C<$node> (which can also be a port ID, in which 752Creates a port on the node C<$node> (which can also be a port ID, in which
742case it's the node where that port resides). 753case it's the node where that port resides).

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines