X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FAPKPM.pm;h=05f5c6ba2bf5db6d15b6957a74d3f1b3d01a8854;hb=HEAD;hp=c112fb423cd1458f6de4fd57b483786740f948fb;hpb=57ad135e29caff0640d2ee93af679871a04cebf7;p=APKPM.git diff --git a/lib/APKPM.pm b/lib/APKPM.pm index c112fb4..05f5c6b 100644 --- a/lib/APKPM.pm +++ b/lib/APKPM.pm @@ -6,6 +6,11 @@ use Time::HiRes; use JSON::XS; use Data::Dump qw(dump); +our $VERSION = '0.00'; + +with 'APKPM::Gearman'; +with 'APKPM::Gearman::Client'; + sub prefix { '' } sub process_name { @@ -14,30 +19,23 @@ sub process_name { return "$orig ($job_name)"; } -our $nr = 0; - -sub ping : Job : MinProcesses(1) : MaxProcesses(5) { +sub search : Job : Encode(e_json) : MinProcesses(0) { my ( $self, $job, $workload ) = @_; - warn "# ping $job $workload\n"; - sleep 2; $nr++; - return "pong [$workload] $$ $nr"; + 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 inc_foo : Job : MinProcesses(1) : MaxProcesses(5) : Encode : Decode { - my ( $self, $job, $workload ) = @_; - warn "# inc_foo $job ", dump($workload); - $workload->{foo}++; - return $workload; -} - -sub encode { - my ( $self, $result ) = @_; - return JSON::XS::encode_json($result); -} - -sub decode { - my ( $self, $workload ) = @_; - return JSON::XS::decode_json($workload); -} 1;