From c951abcc6b413af4d1a89dee32fd7dd06c82ab22 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Sun, 13 Mar 2011 14:30:14 +0100 Subject: [PATCH] move encode/decode into APKPM::Gearman role --- lib/APKPM.pm | 16 +++------------- lib/APKPM/CRM.pm | 11 ++--------- lib/APKPM/Davolink.pm | 16 ++-------------- lib/APKPM/Gearman.pm | 27 +++++++++++++++++++++++++++ lib/APKPM/LDAP.pm | 11 ++--------- lib/APKPM/Ping.pm | 11 +++-------- lib/APKPM/Store.pm | 11 +++-------- 7 files changed, 42 insertions(+), 61 deletions(-) create mode 100644 lib/APKPM/Gearman.pm diff --git a/lib/APKPM.pm b/lib/APKPM.pm index e87da68..3b2517a 100644 --- a/lib/APKPM.pm +++ b/lib/APKPM.pm @@ -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; diff --git a/lib/APKPM/CRM.pm b/lib/APKPM/CRM.pm index 7396b5f..1b9c7e2 100644 --- a/lib/APKPM/CRM.pm +++ b/lib/APKPM/CRM.pm @@ -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; diff --git a/lib/APKPM/Davolink.pm b/lib/APKPM/Davolink.pm index 56b6efc..b6c62de 100644 --- a/lib/APKPM/Davolink.pm +++ b/lib/APKPM/Davolink.pm @@ -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 index 0000000..584e7f7 --- /dev/null +++ b/lib/APKPM/Gearman.pm @@ -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; diff --git a/lib/APKPM/LDAP.pm b/lib/APKPM/LDAP.pm index 6a24312..c697b11 100644 --- a/lib/APKPM/LDAP.pm +++ b/lib/APKPM/LDAP.pm @@ -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; diff --git a/lib/APKPM/Ping.pm b/lib/APKPM/Ping.pm index 459f50f..a601d23 100644 --- a/lib/APKPM/Ping.pm +++ b/lib/APKPM/Ping.pm @@ -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; diff --git a/lib/APKPM/Store.pm b/lib/APKPM/Store.pm index 66932f6..e8eeabd 100644 --- a/lib/APKPM/Store.pm +++ b/lib/APKPM/Store.pm @@ -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; -- 2.20.1