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 {
return "$orig ($job_name)";
}
-my $p = Net::Ping->new;
-$p->hires;
-
-sub ping : Job : MinProcesses(1) : MaxProcesses(5) {
- my ( $self, $job, $workload ) = @_;
- warn "# ping $job $workload\n";
- my ( $ok, $t, $ip ) = $p->ping( $workload );
- warn "# $ok $t $ip\n";
- return $t;
-}
-
-sub inc_foo : Job : MinProcesses(1) : MaxProcesses(5) : Encode : Decode {
+sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
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);
+ 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 ) = @_;
- return JSON::XS::decode_json($workload);
-}
1;