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.96 by elmex, Thu Oct 1 13:19:03 2009 UTC vs.
Revision 1.99 by root, Fri Oct 2 14:12:16 2009 UTC

143 143
144use AE (); 144use AE ();
145 145
146use base "Exporter"; 146use base "Exporter";
147 147
148our $VERSION = $AnyEvent::MP::Kernel::VERSION; 148our $VERSION = 1.2;
149 149
150our @EXPORT = qw( 150our @EXPORT = qw(
151 NODE $NODE *SELF node_of after 151 NODE $NODE *SELF node_of after
152 configure 152 configure
153 snd rcv mon mon_guard kil psub spawn cal 153 snd rcv mon mon_guard kil psub spawn cal
727 727
728If an optional time-out (in seconds) is given and it is not C<undef>, 728If an optional time-out (in seconds) is given and it is not C<undef>,
729then the callback will be called without any arguments after the time-out 729then the callback will be called without any arguments after the time-out
730elapsed and the port is C<kil>ed. 730elapsed and the port is C<kil>ed.
731 731
732If no time-out is given, then the local port will monitor the remote port 732If no time-out is given (or it is C<undef>), then the local port will
733instead, so it eventually gets cleaned-up. 733monitor the remote port instead, so it eventually gets cleaned-up.
734 734
735Currently this function returns the temporary port, but this "feature" 735Currently this function returns the temporary port, but this "feature"
736might go in future versions unless you can make a convincing case that 736might go in future versions unless you can make a convincing case that
737this is indeed useful for something. 737this is indeed useful for something.
738 738
787 787
788=item * Node IDs are arbitrary strings in AEMP. 788=item * Node IDs are arbitrary strings in AEMP.
789 789
790Erlang relies on special naming and DNS to work everywhere in the same 790Erlang relies on special naming and DNS to work everywhere in the same
791way. AEMP relies on each node somehow knowing its own address(es) (e.g. by 791way. AEMP relies on each node somehow knowing its own address(es) (e.g. by
792configuration or DNS), but will otherwise discover other odes itself. 792configuration or DNS), and possibly the addresses of some seed nodes, but
793will otherwise discover other nodes (and their IDs) itself.
793 794
794=item * Erlang has a "remote ports are like local ports" philosophy, AEMP 795=item * Erlang has a "remote ports are like local ports" philosophy, AEMP
795uses "local ports are like remote ports". 796uses "local ports are like remote ports".
796 797
797The failure modes for local ports are quite different (runtime errors 798The failure modes for local ports are quite different (runtime errors
822so does not need a queue that can overflow). AEMP sends are immediate, 823so does not need a queue that can overflow). AEMP sends are immediate,
823connection establishment is handled in the background. 824connection establishment is handled in the background.
824 825
825=item * Erlang suffers from silent message loss, AEMP does not. 826=item * Erlang suffers from silent message loss, AEMP does not.
826 827
827Erlang makes few guarantees on messages delivery - messages can get lost 828Erlang implements few guarantees on messages delivery - messages can get
828without any of the processes realising it (i.e. you send messages a, b, 829lost without any of the processes realising it (i.e. you send messages a,
829and c, and the other side only receives messages a and c). 830b, and c, and the other side only receives messages a and c).
830 831
831AEMP guarantees correct ordering, and the guarantee that after one message 832AEMP guarantees correct ordering, and the guarantee that after one message
832is lost, all following ones sent to the same port are lost as well, until 833is lost, all following ones sent to the same port are lost as well, until
833monitoring raises an error, so there are no silent "holes" in the message 834monitoring raises an error, so there are no silent "holes" in the message
834sequence. 835sequence.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines