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.136 by root, Wed Mar 21 15:22:16 2012 UTC

247 247
248IF true, then the values specified in the C<configure> will take 248IF true, then the values specified in the C<configure> will take
249precedence over any values configured via the rc file. The default is for 249precedence over any values configured via the rc file. The default is for
250the rc file to override any options specified in the program. 250the rc file to override any options specified in the program.
251 251
252=item secure => $pass->($nodeid) 252=item secure => $pass->(@msg)
253 253
254In addition to specifying a boolean, you can specify a code reference that 254In addition to specifying a boolean, you can specify a code reference that
255is called for every remote execution attempt - the execution request is 255is called for every code execution attempt - the execution request is
256granted iff the callback returns a true value. 256granted iff the callback returns a true value.
257
258Most of the time the callback should look only at
259C<$AnyEvent::MP::Kernel::SRCNODE> to make a decision, and not at the
260actual message (which can be about anything, and is mostly provided for
261diagnostic purposes).
257 262
258See F<semp setsecure> for more info. 263See F<semp setsecure> for more info.
259 264
260=back 265=back
261 266
399=cut 404=cut
400 405
401sub rcv($@); 406sub rcv($@);
402 407
403my $KILME = sub { 408my $KILME = sub {
404 die "received message on port without callback"; 409 (my $tag = substr $_[0], 0, 30) =~ s/([\x20-\x7e])/./g;
410 kil $SELF, unhandled_message => "no callback found for message '$tag'";
405}; 411};
406 412
407sub port(;&) { 413sub port(;&) {
408 my $id = $UNIQ . ++$ID; 414 my $id = $UNIQ . ++$ID;
409 my $port = "$NODE#$id"; 415 my $port = "$NODE#$id";
421 427
422The global C<$SELF> (exported by this module) contains C<$port> while 428The global C<$SELF> (exported by this module) contains C<$port> while
423executing the callback. Runtime errors during callback execution will 429executing the callback. Runtime errors during callback execution will
424result in the port being C<kil>ed. 430result in the port being C<kil>ed.
425 431
426The default callback received all messages not matched by a more specific 432The default callback receives all messages not matched by a more specific
427C<tag> match. 433C<tag> match.
428 434
429=item rcv $local_port, tag => $callback->(@msg_without_tag), ... 435=item rcv $local_port, tag => $callback->(@msg_without_tag), ...
430 436
431Register (or replace) callbacks to be called on messages starting with the 437Register (or replace) callbacks to be called on messages starting with the
732will be reported as reason C<< die => $@ >>. 738will be reported as reason C<< die => $@ >>.
733 739
734Transport/communication errors are reported as C<< transport_error => 740Transport/communication errors are reported as C<< transport_error =>
735$message >>. 741$message >>.
736 742
737=cut 743Common idioms:
744
745 # silently remove yourself, do not kill linked ports
746 kil $SELF;
747
748 # report a failure in some detail
749 kil $SELF, failure_mode_1 => "it failed with too high temperature";
750
751 # do not waste much time with killing, just die when something goes wrong
752 open my $fh, "<file"
753 or die "file: $!";
738 754
739=item $port = spawn $node, $initfunc[, @initdata] 755=item $port = spawn $node, $initfunc[, @initdata]
740 756
741Creates a port on the node C<$node> (which can also be a port ID, in which 757Creates 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). 758case it's the node where that port resides).

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines