move encode/decode into APKPM::Gearman role
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 13 Mar 2011 13:30:14 +0000 (14:30 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 13 Mar 2011 13:30:14 +0000 (14:30 +0100)
lib/APKPM.pm
lib/APKPM/CRM.pm
lib/APKPM/Davolink.pm
lib/APKPM/Gearman.pm [new file with mode: 0644]
lib/APKPM/LDAP.pm
lib/APKPM/Ping.pm
lib/APKPM/Store.pm

index e87da68..3b2517a 100644 (file)
@@ -8,6 +8,8 @@ use Data::Dump qw(dump);
 
 our $VERSION = '0.00';
 
+with 'APKPM::Gearman';
+
 sub prefix { '' }
 
 sub process_name {
@@ -16,21 +18,9 @@ sub process_name {
        return "$orig ($job_name)";
 }
 
-sub poll : Job : MinProcesses(1) : MaxProcesses(5) : Encode : Decode {
+sub poll : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) : Decode(d_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# poll $job ", dump($workload);
 }
 
-sub encode {
-       my ( $self, $result ) = @_;
-       warn "# encode ",dump $result;
-       return JSON::XS::encode_json($result);
-}
-
-sub decode {
-       my ( $self, $workload ) = @_;
-       warn "# decode ", dump $workload;
-       return JSON::XS::decode_json($workload);
-}
-
 1;
index 7396b5f..1b9c7e2 100644 (file)
@@ -3,10 +3,10 @@ package APKPM::CRM;
 use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
-use JSON::XS;
 use Data::Dump qw(dump);
 
 with 'APKPM::Config';
+with 'APKPM::Gearman';
 
 require RPC::XML;
 require RPC::XML::Client;
@@ -26,7 +26,7 @@ sub begin {
        warn "# begin ", dump( $workload );
 }
 
-sub username : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
+sub username : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# username ",dump($workload);
        my $cli = RPC::XML::Client->new($self->config('crmxml'));
@@ -36,11 +36,4 @@ sub username : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
        return ref $resp ? $resp->value->[0] : { error => $resp };
 }
 
-sub encode {
-       my ( $self, $result ) = @_;
-       my $json = JSON::XS::encode_json($result);
-       warn "## ", dump $json;
-       return $json;
-}
-
 1;
index 56b6efc..b6c62de 100644 (file)
@@ -3,18 +3,18 @@ package APKPM::Davolink;
 use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
-use JSON::XS;
 use Data::Dump qw(dump);
 
 with 'APKPM::Config';
 with 'APKPM::Gearman::Client';
+with 'APKPM::Gearman';
 
 use lib '/opt/managment_tools/lib';
 use H1::Davolink;
 
 sub prefix { 'Davolink_' }
 
-sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode : Encode {
+sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_array) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# workload = ", dump $workload;
        my $cpeip = shift @$workload;
@@ -38,16 +38,4 @@ sub info : Job : MinProcesses(1) : MaxProcesses(5) : Decode : Encode {
        return $ret;
 }
 
-sub decode {
-       my ( $self, $result ) = @_;
-       warn "# decode ", dump($result);
-       return [ split(/\s+/,$result) ];
-}
-
-sub encode {
-       my ( $self, $result ) = @_;
-       warn "# encode ",dump $result;
-       return JSON::XS::encode_json($result);
-}
-
 1;
diff --git a/lib/APKPM/Gearman.pm b/lib/APKPM/Gearman.pm
new file mode 100644 (file)
index 0000000..584e7f7
--- /dev/null
@@ -0,0 +1,27 @@
+package APKPM::Gearman;
+
+use Moose::Role;
+
+use Data::Dump qw(dump);
+use JSON::XS;
+
+sub e_json {
+       my ( $self, $result ) = @_;
+       warn "# e_json ", dump $result;
+       return JSON::XS::encode_json($result);
+}
+
+sub d_json {
+       my ( $self, $workload ) = @_;
+       warn "# d_json ", dump $workload;
+       return JSON::XS::decode_json($workload);
+}
+
+sub d_array {
+       my ( $self, $result ) = @_;
+       warn "# d_array ", dump($result);
+       return [ split(/\s+/,$result) ];
+
+}
+
+1;
index 6a24312..c697b11 100644 (file)
@@ -3,10 +3,10 @@ package APKPM::LDAP;
 use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
-use JSON::XS;
 use Data::Dump qw(dump);
 
 with 'APKPM::Config';
+with 'APKPM::Gearman';
 
 use Net::LDAP;
 
@@ -18,7 +18,7 @@ sub process_name {
        return "$orig ($job_name)";
 }
 
-sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
+sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
 
        my $filter = $workload =~ m/\d+\.\d+\.\d+\.\d+/ ?
@@ -44,11 +44,4 @@ sub search : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
        return $entries;
 }
 
-sub encode {
-       my ( $self, $result ) = @_;
-       my $json = JSON::XS::encode_json($result);
-       warn "## ", dump $json;
-       return $json;
-}
-
 1;
index 459f50f..a601d23 100644 (file)
@@ -3,10 +3,11 @@ package APKPM::Ping;
 use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
-use JSON::XS;
 use Data::Dump qw(dump);
 use Net::Ping;
 
+with 'APKPM::Gearman';
+
 sub prefix { '' }
 
 sub process_name {
@@ -18,7 +19,7 @@ sub process_name {
 my $p = Net::Ping->new;
 $p->hires;
 
-sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
+sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Encode(e_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# ping $job $workload\n";
        my ( $ok, $rtt, $ip ) = $p->ping( $workload );
@@ -27,10 +28,4 @@ sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Encode {
        return { ip => $ip, rtt => $rtt };
 }
 
-sub encode {
-       my ( $self, $result ) = @_;
-       warn "# encode ",dump $result;
-       return JSON::XS::encode_json($result);
-}
-
 1;
index 66932f6..e8eeabd 100644 (file)
@@ -3,10 +3,11 @@ package APKPM::Store;
 use base qw(Gearman::Driver::Worker);
 use Moose;
 use Time::HiRes;
-use JSON::XS;
 use Data::Dump qw(dump);
 use DBD::Pg;
 
+with 'APKPM::Gearman';
+
 sub prefix { 'Store_' }
 
 sub process_name {
@@ -15,7 +16,7 @@ sub process_name {
        return "$orig ($job_name)";
 }
 
-sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode {
+sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) {
        my ( $self, $job, $workload ) = @_;
        warn "# ADSL ",dump($workload);
        my $dbh = DBI->connect_cached('DBI:Pg:dbname=apkpm','','', {
@@ -31,10 +32,4 @@ sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode {
        $sth->execute( map { $workload->{$_} } @c );
 }
 
-sub decode {
-       my ( $self, $workload ) = @_;
-       warn "# decode ", dump $workload;
-       return JSON::XS::decode_json($workload);
-}
-
 1;