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.102 by root, Tue Oct 6 13:37:52 2009 UTC vs.
Revision 1.108 by root, Wed Dec 30 13:37:53 2009 UTC

155 155
156use AE (); 156use AE ();
157 157
158use base "Exporter"; 158use base "Exporter";
159 159
160our $VERSION = 1.21; 160our $VERSION = 1.24;
161 161
162our @EXPORT = qw( 162our @EXPORT = qw(
163 NODE $NODE *SELF node_of after 163 NODE $NODE *SELF node_of after
164 configure 164 configure
165 snd rcv mon mon_guard kil psub peval spawn cal 165 snd rcv mon mon_guard kil psub peval spawn cal
191Before a node can talk to other nodes on the network (i.e. enter 191Before a node can talk to other nodes on the network (i.e. enter
192"distributed mode") it has to configure itself - the minimum a node needs 192"distributed mode") it has to configure itself - the minimum a node needs
193to know is its own name, and optionally it should know the addresses of 193to know is its own name, and optionally it should know the addresses of
194some other nodes in the network to discover other nodes. 194some other nodes in the network to discover other nodes.
195 195
196The key/value pairs are basically the same ones as documented for the
197F<aemp> command line utility (sans the set/del prefix).
198
196This function configures a node - it must be called exactly once (or 199This function configures a node - it must be called exactly once (or
197never) before calling other AnyEvent::MP functions. 200never) before calling other AnyEvent::MP functions.
198 201
199=over 4 202=over 4
200 203
406 if (ref $_[0]) { 409 if (ref $_[0]) {
407 if (my $self = $PORT_DATA{$portid}) { 410 if (my $self = $PORT_DATA{$portid}) {
408 "AnyEvent::MP::Port" eq ref $self 411 "AnyEvent::MP::Port" eq ref $self
409 or Carp::croak "$port: rcv can only be called on message matching ports, caught"; 412 or Carp::croak "$port: rcv can only be called on message matching ports, caught";
410 413
411 $self->[2] = shift; 414 $self->[0] = shift;
412 } else { 415 } else {
413 my $cb = shift; 416 my $cb = shift;
414 $PORT{$portid} = sub { 417 $PORT{$portid} = sub {
415 local $SELF = $port; 418 local $SELF = $port;
416 eval { &$cb }; _self_die if $@; 419 eval { &$cb }; _self_die if $@;
417 }; 420 };
418 } 421 }
419 } elsif (defined $_[0]) { 422 } elsif (defined $_[0]) {
420 my $self = $PORT_DATA{$portid} ||= do { 423 my $self = $PORT_DATA{$portid} ||= do {
421 my $self = bless [$PORT{$port} || sub { }, { }, $port], "AnyEvent::MP::Port"; 424 my $self = bless [$PORT{$portid} || sub { }, { }, $port], "AnyEvent::MP::Port";
422 425
423 $PORT{$portid} = sub { 426 $PORT{$portid} = sub {
424 local $SELF = $port; 427 local $SELF = $port;
425 428
426 if (my $cb = $self->[1]{$_[0]}) { 429 if (my $cb = $self->[1]{$_[0]}) {
650 653
651=item kil $port[, @reason] 654=item kil $port[, @reason]
652 655
653Kill the specified port with the given C<@reason>. 656Kill the specified port with the given C<@reason>.
654 657
655If no C<@reason> is specified, then the port is killed "normally" (ports 658If no C<@reason> is specified, then the port is killed "normally" -
656monitoring other ports will not necessarily die because a port dies 659monitor callback will be invoked, but the kil will not cause linked ports
657"normally"). 660(C<mon $mport, $lport> form) to get killed.
658 661
659Otherwise, linked ports get killed with the same reason (second form of 662If a C<@reason> is specified, then linked ports (C<mon $mport, $lport>
660C<mon>, see above). 663form) get killed with the same reason.
661 664
662Runtime errors while evaluating C<rcv> callbacks or inside C<psub> blocks 665Runtime errors while evaluating C<rcv> callbacks or inside C<psub> blocks
663will be reported as reason C<< die => $@ >>. 666will be reported as reason C<< die => $@ >>.
664 667
665Transport/communication errors are reported as C<< transport_error => 668Transport/communication errors are reported as C<< transport_error =>
979L<AnyEvent::MP::Kernel> - more, lower-level, stuff. 982L<AnyEvent::MP::Kernel> - more, lower-level, stuff.
980 983
981L<AnyEvent::MP::Global> - network maintainance and port groups, to find 984L<AnyEvent::MP::Global> - network maintainance and port groups, to find
982your applications. 985your applications.
983 986
987L<AnyEvent::MP::DataConn> - establish data connections between nodes.
988
984L<AnyEvent::MP::LogCatcher> - simple service to display log messages from 989L<AnyEvent::MP::LogCatcher> - simple service to display log messages from
985all nodes. 990all nodes.
986 991
987L<AnyEvent>. 992L<AnyEvent>.
988 993

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines