… | |
… | |
76 | |
76 | |
77 | =over 4 |
77 | =over 4 |
78 | |
78 | |
79 | =item port |
79 | =item port |
80 | |
80 | |
81 | Not to be confused with a TCP port, a "port" is something you can send |
81 | Not to be confused with TCP ports, a "port" is something you can send |
82 | messages to (with the C<snd> function). |
82 | messages to (with the C<snd> function). |
83 | |
83 | |
84 | Ports allow you to register C<rcv> handlers that can match all or just |
84 | Ports allow you to register C<rcv> handlers that can match all or just |
85 | some messages. Messages send to ports will not be queued, regardless of |
85 | some messages. Messages send to ports will not be queued, regardless of |
86 | anything was listening for them or not. |
86 | whether anything was listening for them or not. |
87 | |
87 | |
88 | Ports are represented by (printable) strings called "port IDs". |
88 | Ports are represented by (printable) strings called "port IDs". |
89 | |
89 | |
90 | =item port ID - C<nodeid#portname> |
90 | =item port ID - C<nodeid#portname> |
91 | |
91 | |
… | |
… | |
302 | this process. If not, then the profile name will be used as node ID, with |
302 | this process. If not, then the profile name will be used as node ID, with |
303 | a unique randoms tring (C</%u>) appended. |
303 | a unique randoms tring (C</%u>) appended. |
304 | |
304 | |
305 | The node ID can contain some C<%> sequences that are expanded: C<%n> |
305 | The node ID can contain some C<%> sequences that are expanded: C<%n> |
306 | is expanded to the local nodename, C<%u> is replaced by a random |
306 | is expanded to the local nodename, C<%u> is replaced by a random |
307 | strign to make the node unique. For example, the F<aemp> commandline |
307 | string to make the node unique. For example, the F<aemp> commandline |
308 | utility uses C<aemp/%n/%u> as nodename, which might expand to |
308 | utility uses C<aemp/%n/%u> as nodename, which might expand to |
309 | C<aemp/cerebro/ZQDGSIkRhEZQDGSIkRhE>. |
309 | C<aemp/cerebro/ZQDGSIkRhEZQDGSIkRhE>. |
310 | |
310 | |
311 | =item step 2, bind listener sockets |
311 | =item step 2, bind listener sockets |
312 | |
312 | |
… | |
… | |
966 | |
966 | |
967 | Different subkeys in the same family can be owned by different nodes |
967 | Different subkeys in the same family can be owned by different nodes |
968 | without problems, and in fact, this is the common method to create worker |
968 | without problems, and in fact, this is the common method to create worker |
969 | pools. For example, a worker port for image scaling might do this: |
969 | pools. For example, a worker port for image scaling might do this: |
970 | |
970 | |
971 | db_set my_image_scalers => $port; |
971 | db_set my_image_scalers => $port; # value not used |
972 | |
972 | |
973 | And clients looking for an image scaler will want to get the |
973 | And clients looking for an image scaler will want to get the |
974 | C<my_image_scalers> keys from time to time: |
974 | C<my_image_scalers> keys from time to time: |
975 | |
975 | |
976 | db_keys my_image_scalers => sub { |
976 | db_keys my_image_scalers => sub { |