… | |
… | |
9 | $NODE # contains this node's noderef |
9 | $NODE # contains this node's noderef |
10 | NODE # returns this node's noderef |
10 | NODE # returns this node's noderef |
11 | NODE $port # returns the noderef of the port |
11 | NODE $port # returns the noderef of the port |
12 | |
12 | |
13 | $SELF # receiving/own port id in rcv callbacks |
13 | $SELF # receiving/own port id in rcv callbacks |
|
|
14 | |
|
|
15 | # initialise the node so it can send/receive messages |
|
|
16 | initialise_node; # -OR- |
|
|
17 | initialise_node "localhost:4040"; # -OR- |
|
|
18 | initialise_node "slave/", "localhost:4040" |
14 | |
19 | |
15 | # ports are message endpoints |
20 | # ports are message endpoints |
16 | |
21 | |
17 | # sending messages |
22 | # sending messages |
18 | snd $port, type => data...; |
23 | snd $port, type => data...; |
19 | snd $port, @msg; |
24 | snd $port, @msg; |
20 | snd @msg_with_first_element_being_a_port; |
25 | snd @msg_with_first_element_being_a_port; |
21 | |
26 | |
22 | # miniports |
27 | # creating/using miniports |
23 | my $miniport = port { my @msg = @_; 0 }; |
28 | my $miniport = port { my @msg = @_; 0 }; |
24 | |
29 | |
25 | # full ports |
30 | # creating/using full ports |
26 | my $port = port; |
31 | my $port = port; |
27 | rcv $port, smartmatch => $cb->(@msg); |
32 | rcv $port, smartmatch => $cb->(@msg); |
28 | rcv $port, ping => sub { snd $_[0], "pong"; 0 }; |
33 | rcv $port, ping => sub { snd $_[0], "pong"; 0 }; |
29 | rcv $port, pong => sub { warn "pong received\n"; 0 }; |
34 | rcv $port, pong => sub { warn "pong received\n"; 0 }; |
30 | |
35 | |
31 | # remote ports |
|
|
32 | my $port = spawn $node, $initfunc, @initdata; |
|
|
33 | |
|
|
34 | # more, smarter, matches (_any_ is exported by this module) |
36 | # more, smarter, matches (_any_ is exported by this module) |
35 | rcv $port, [child_died => $pid] => sub { ... |
37 | rcv $port, [child_died => $pid] => sub { ... |
36 | rcv $port, [_any_, _any_, 3] => sub { .. $_[2] is 3 |
38 | rcv $port, [_any_, _any_, 3] => sub { .. $_[2] is 3 |
|
|
39 | |
|
|
40 | # create a port on another node |
|
|
41 | my $port = spawn $node, $initfunc, @initdata; |
37 | |
42 | |
38 | # monitoring |
43 | # monitoring |
39 | mon $port, $cb->(@msg) # callback is invoked on death |
44 | mon $port, $cb->(@msg) # callback is invoked on death |
40 | mon $port, $otherport # kill otherport on abnormal death |
45 | mon $port, $otherport # kill otherport on abnormal death |
41 | mon $port, $otherport, @msg # send message on death |
46 | mon $port, $otherport, @msg # send message on death |