From 7615d117eb4103ee38e7a4a376278a4bfd3f8406 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sat, 12 Mar 2011 17:33:27 +0100 Subject: [PATCH] added Gearman client --- lib/APKPM/Davolink.pm | 2 ++ lib/APKPM/Gearman/Client.pm | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 lib/APKPM/Gearman/Client.pm diff --git a/lib/APKPM/Davolink.pm b/lib/APKPM/Davolink.pm index 34faaad..56b6efc 100644 --- a/lib/APKPM/Davolink.pm +++ b/lib/APKPM/Davolink.pm @@ -7,6 +7,7 @@ use JSON::XS; use Data::Dump qw(dump); with 'APKPM::Config'; +with 'APKPM::Gearman::Client'; use lib '/opt/managment_tools/lib'; use H1::Davolink; @@ -25,6 +26,7 @@ sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode : Encode { $ret->{UPTIME} = $cpeconnect->custom("cat /proc/uptime"); } elsif ( $param =~ m/adsl/i ) { $ret->{ADSL} = { $cpeconnect->adsl_info }; + $self->do_background_json( 'Store_ADSL', $ret ); } elsif ( $param =~ m/wan/i ) { $ret->{WAN} = [ $cpeconnect->wan_info ]; } elsif ( $param =~ m/route/i ) { diff --git a/lib/APKPM/Gearman/Client.pm b/lib/APKPM/Gearman/Client.pm new file mode 100644 index 0000000..0a5da62 --- /dev/null +++ b/lib/APKPM/Gearman/Client.pm @@ -0,0 +1,23 @@ +package APKPM::Gearman::Client; + +use Moose::Role; + +use Gearman::Client; +use JSON::XS; + +has gc => ( + is => 'ro', + default => sub { + my $self = shift; + my $gc = Gearman::Client->new; + $gc->job_servers( $self->server ); + $gc; + }, +); + +sub do_background_json { + my ( $self, $func, $args ) = @_; + $self->gc->dispatch_background( $func, JSON::XS::encode_json($args) ); +} + +1; -- 2.20.1