Merge branch 'devel' of h1dev:/srv/APKPM/
[APKPM.git] / lib / APKPM.pm
index 051159b..05f5c6b 100644 (file)
@@ -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;