Merge branch 'devel' of h1dev:/srv/APKPM/
[APKPM.git] / lib / APKPM.pm
1 package APKPM;
2
3 use base qw(Gearman::Driver::Worker);
4 use Moose;
5 use Time::HiRes;
6 use JSON::XS;
7 use Data::Dump qw(dump);
8 use Net::Ping;
9
10 our $VERSION = '0.00';
11
12 sub prefix { '' }
13
14 sub process_name {
15         my ( $self, $orig, $job_name ) = @_;
16         warn "# process_name $orig $job_name\n";
17         return "$orig ($job_name)";
18 }
19
20 my $p = Net::Ping->new;
21 $p->hires;
22
23 sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
24         my ( $self, $job, $workload ) = @_;
25         warn "# ping $job $workload\n";
26         my ( $ok, $rtt, $ip ) = $p->ping( $workload );
27         return { error => $workload } unless $ok;
28         warn "# ping $ip $rtt $ok";
29         return { ip => $ip, rtt => $rtt };
30 }
31
32 sub inc_foo : Job : MinProcesses(1) : MaxProcesses(5) : Encode : Decode {
33         my ( $self, $job, $workload ) = @_;
34         warn "# inc_foo $job ", dump($workload);
35         $workload->{foo}++;
36         return $workload;
37 }
38
39 sub encode {
40         my ( $self, $result ) = @_;
41         warn "# encode ",dump $result;
42         return JSON::XS::encode_json($result);
43 }
44
45 sub decode {
46         my ( $self, $workload ) = @_;
47         warn "# decode ", dump $workload;
48         return JSON::XS::decode_json($workload);
49 }
50
51 1;