X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FAPKPM.pm;h=05f5c6ba2bf5db6d15b6957a74d3f1b3d01a8854;hb=HEAD;hp=051159b8d0becce419320da1d70e7bb66291a2b1;hpb=a2b425e9ffdf795982a57a3b50b2e632901b580b;p=APKPM.git diff --git a/lib/APKPM.pm b/lib/APKPM.pm index 051159b..05f5c6b 100644 --- a/lib/APKPM.pm +++ b/lib/APKPM.pm @@ -5,10 +5,12 @@ use Moose; use Time::HiRes; use JSON::XS; use Data::Dump qw(dump); -use Net::Ping; our $VERSION = '0.00'; +with 'APKPM::Gearman'; +with 'APKPM::Gearman::Client'; + sub prefix { '' } sub process_name { @@ -17,35 +19,23 @@ sub process_name { return "$orig ($job_name)"; } -my $p = Net::Ping->new; -$p->hires; - -sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Encode { - my ( $self, $job, $workload ) = @_; - warn "# ping $job $workload\n"; - my ( $ok, $rtt, $ip ) = $p->ping( $workload ); - return { error => $workload } unless $ok; - warn "# ping $ip $rtt $ok"; - return { ip => $ip, rtt => $rtt }; -} - -sub inc_foo : Job : MinProcesses(1) : MaxProcesses(5) : Encode : Decode { +sub search : Job : Encode(e_json) : MinProcesses(0) { my ( $self, $job, $workload ) = @_; - warn "# inc_foo $job ", dump($workload); - $workload->{foo}++; - return $workload; -} - -sub encode { - my ( $self, $result ) = @_; - warn "# encode ",dump $result; - return JSON::XS::encode_json($result); + warn "# search $job ", dump($workload); + + my $res = { workload => $workload }; + + my $taskset = $self->gc->new_task_set; + $taskset->add_task('LDAP_search', $workload, { + on_complete => sub { $res->{ldap} = $self->d_json( ${$_[0]} ) } + }); + $taskset->add_task('CRM_search', $workload, { + on_complete => sub { $res->{crm} = $self->d_json( ${$_[0]} ) } + }); + warn "# wait"; + $taskset->wait; + return $res; } -sub decode { - my ( $self, $workload ) = @_; - warn "# decode ", dump $workload; - return JSON::XS::decode_json($workload); -} 1;