ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-FastPing/FastPing.pm
(Generate patch)

Comparing AnyEvent-FastPing/FastPing.pm (file contents):
Revision 1.5 by root, Mon Apr 27 22:08:59 2009 UTC vs.
Revision 1.8 by root, Wed Apr 7 14:13:16 2010 UTC

27no warnings; 27no warnings;
28 28
29use AnyEvent; 29use AnyEvent;
30 30
31BEGIN { 31BEGIN {
32 our $VERSION = '1.11'; 32 our $VERSION = '1.13';
33 our @ISA = qw(Exporter); 33 our @ISA = qw(Exporter);
34 34
35 require Exporter; 35 require Exporter;
36 #Exporter::export_ok_tags (keys %EXPORT_TAGS); 36 #Exporter::export_ok_tags (keys %EXPORT_TAGS);
37 37
156Register a callback that is called for every received ping reply 156Register a callback that is called for every received ping reply
157(regardless of whether a ping is still in process or not and regardless of 157(regardless of whether a ping is still in process or not and regardless of
158whether the reply is actually a reply to a ping sent earlier). 158whether the reply is actually a reply to a ping sent earlier).
159 159
160The code reference gets a single parameter - an arrayref with an 160The code reference gets a single parameter - an arrayref with an
161entry for each received packet (replies are beign batched for greater 161entry for each received packet (replies are being batched for greater
162efficiency). Each packet is represented by an arrayref with three members: 162efficiency). Each packet is represented by an arrayref with three members:
163the source address (an octet string of either 4 (IPv4) or 16 (IPv6) octets 163the source address (an octet string of either 4 (IPv4) or 16 (IPv6) octets
164length), the payload as passed to C<icmp_ping> and the round trip time in 164length), the payload as passed to C<icmp_ping> and the round trip time in
165seconds. 165seconds.
166
167Example: register a callback which simply dumps the received data. Since
168the coderef is created on the fly via sub, it would be hard to unregister
169this callback again :)
170
171 AnyEvent::FastPing::register_cb sub {
172 for (@{$_[0]}) {
173 printf "%s %d %g\n",
174 (4 == length $_->[0] ? inet_ntoa $_->[0] : Socket6::inet_ntop (&AF_INET6, $_->[0])),
175 $_->[2],
176 $_->[1];
177 }
178 };
166 179
167Example: a single ping reply with payload of 1 from C<::1> gets passed 180Example: a single ping reply with payload of 1 from C<::1> gets passed
168like this: 181like this:
169 182
170 [ [ 183 [ [
196 209
197=cut 210=cut
198 211
199our @CB; 212our @CB;
200 213
201sub register_cb(&) { 214sub register_cb($) {
202 push @CB, $_[0]; 215 push @CB, $_[0];
203} 216}
204 217
205sub unregister_cb($) { 218sub unregister_cb($) {
206 @CB = grep $_ != $_[0], @CB; 219 @CB = grep $_ != $_[0], @CB;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines