Merge branch 'devel' of h1dev:/srv/APKPM/
[APKPM.git] / lib / APKPM / Ping.pm
1 package APKPM::Ping;
2
3 use base qw(Gearman::Driver::Worker);
4 use Moose;
5 use Time::HiRes;
6 use Data::Dump qw(dump);
7 use Net::Ping;
8
9 with 'APKPM::Gearman';
10
11 sub prefix { '' }
12
13 sub process_name {
14         my ( $self, $orig, $job_name ) = @_;
15         warn "# process_name $orig $job_name\n";
16         return "$orig ($job_name)";
17 }
18
19 my $p = Net::Ping->new;
20 $p->hires;
21
22 sub ping : Job : Encode(e_json) {
23         my ( $self, $job, $workload ) = @_;
24         warn "# ping $job $workload\n";
25         my ( $ok, $rtt, $ip ) = $p->ping( $workload );
26         return { error => $workload } unless $ok;
27         warn "# ping $ip $rtt $ok";
28         return { ip => $ip, rtt => $rtt };
29 }
30
31 1;