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.74 by root, Mon Aug 31 11:11:27 2009 UTC vs.
Revision 1.75 by root, Mon Aug 31 13:18:06 2009 UTC

4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 use AnyEvent::MP; 7 use AnyEvent::MP;
8 8
9 $NODE # contains this node's noderef 9 $NODE # contains this node's node ID
10 NODE # returns this node's noderef 10 NODE # returns this node's node ID
11 NODE $port # returns the noderef of the port
12 11
13 $SELF # receiving/own port id in rcv callbacks 12 $SELF # receiving/own port id in rcv callbacks
14 13
15 # initialise the node so it can send/receive messages 14 # initialise the node so it can send/receive messages
16 configure; 15 configure;
17 16
18 # ports are message endpoints 17 # ports are message destinations
19 18
20 # sending messages 19 # sending messages
21 snd $port, type => data...; 20 snd $port, type => data...;
22 snd $port, @msg; 21 snd $port, @msg;
23 snd @msg_with_first_element_being_a_port; 22 snd @msg_with_first_element_being_a_port;
372 371
373=cut 372=cut
374 373
375sub rcv($@) { 374sub rcv($@) {
376 my $port = shift; 375 my $port = shift;
377 my ($noderef, $portid) = split /#/, $port, 2; 376 my ($nodeid, $portid) = split /#/, $port, 2;
378 377
379 $NODE{$noderef} == $NODE{""} 378 $NODE{$nodeid} == $NODE{""}
380 or Carp::croak "$port: rcv can only be called on local ports, caught"; 379 or Carp::croak "$port: rcv can only be called on local ports, caught";
381 380
382 while (@_) { 381 while (@_) {
383 if (ref $_[0]) { 382 if (ref $_[0]) {
384 if (my $self = $PORT_DATA{$portid}) { 383 if (my $self = $PORT_DATA{$portid}) {
524 mon $port, $self => "restart"; 523 mon $port, $self => "restart";
525 524
526=cut 525=cut
527 526
528sub mon { 527sub mon {
529 my ($noderef, $port) = split /#/, shift, 2; 528 my ($nodeid, $port) = split /#/, shift, 2;
530 529
531 my $node = $NODE{$noderef} || add_node $noderef; 530 my $node = $NODE{$nodeid} || add_node $nodeid;
532 531
533 my $cb = @_ ? shift : $SELF || Carp::croak 'mon: called with one argument only, but $SELF not set,'; 532 my $cb = @_ ? shift : $SELF || Carp::croak 'mon: called with one argument only, but $SELF not set,';
534 533
535 unless (ref $cb) { 534 unless (ref $cb) {
536 if (@_) { 535 if (@_) {
650 }; 649 };
651 _self_die if $@; 650 _self_die if $@;
652} 651}
653 652
654sub spawn(@) { 653sub spawn(@) {
655 my ($noderef, undef) = split /#/, shift, 2; 654 my ($nodeid, undef) = split /#/, shift, 2;
656 655
657 my $id = "$RUNIQ." . $ID++; 656 my $id = "$RUNIQ." . $ID++;
658 657
659 $_[0] =~ /::/ 658 $_[0] =~ /::/
660 or Carp::croak "spawn init function must be a fully-qualified name, caught"; 659 or Carp::croak "spawn init function must be a fully-qualified name, caught";
661 660
662 snd_to_func $noderef, "AnyEvent::MP::_spawn" => $id, @_; 661 snd_to_func $nodeid, "AnyEvent::MP::_spawn" => $id, @_;
663 662
664 "$noderef#$id" 663 "$nodeid#$id"
665} 664}
666 665
667=item after $timeout, @msg 666=item after $timeout, @msg
668 667
669=item after $timeout, $callback 668=item after $timeout, $callback

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines