added do with json decode
[APKPM.git] / lib / APKPM / Gearman / Client.pm
1 package APKPM::Gearman::Client;
2
3 use Moose::Role;
4
5 use Gearman::Client;
6 use JSON::XS;
7 use Data::Dump qw(dump);
8
9 requires 'server';
10
11 has gc => (
12         is => 'ro',
13         lazy => 1, # wait for server to have value
14         default => sub {
15                 my $self = shift;
16                 my $gc = Gearman::Client->new;
17                 $gc->job_servers( $self->server );
18                 warn "# Gearman server: ", $self->server;
19                 $gc;
20         },
21 );
22
23 sub do_background_json {
24         my ( $self, $func, $args ) = @_;
25         warn "# do_background_json ", dump( $func, $args );
26         $self->gc->dispatch_background( $func, JSON::XS::encode_json($args) );
27 }
28
29 sub do {
30         my ( $self, $func, $args ) = @_;
31         warn "# do ",dump( $func,$args );
32         my $ret = $self->gc->do_task( $func, $args );
33         warn "## $func $args = ",dump($ret);
34         return JSON::XS::decode_json $$ret;
35 }
36
37 1;