… | |
… | |
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 | |
… | |
… | |
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 { |