added Gearman client
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 16:33:27 +0000 (17:33 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 12 Mar 2011 16:48:20 +0000 (17:48 +0100)
lib/APKPM/Davolink.pm
lib/APKPM/Gearman/Client.pm [new file with mode: 0644]

index 34faaad..56b6efc 100644 (file)
@@ -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 (file)
index 0000000..0a5da62
--- /dev/null
@@ -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;