3 use base qw(Gearman::Driver::Worker);
6 use Data::Dump qw(dump);
12 require RPC::XML::Client;
15 #$RPC::XML::ENCODING = "utf-8"; # FIXME really used?
17 sub prefix { 'DSLAM_' }
20 my ( $self, $orig, $job_name ) = @_;
21 warn "# process_name $orig $job_name\n";
22 return "$orig ($job_name)";
26 my ( $self, $job, $workload ) = @_;
27 warn "# begin ", dump( $workload );
30 sub search : Job : Encode(e_json_encode) {
31 my ( $self, $job, $workload ) = @_;
32 warn "# search ",dump($workload);
36 if ( $workload =~ m/[:=]/ ) {
37 ($field,$value) = split(/[:=]/,$workload,2)
39 return { error => 'invalid workload', expected => 'OPT_82:%' };
42 my $cli = RPC::XML::Client->new($self->config('crmxml'));
43 warn "RPC::XML $field $value";
44 my $resp = $cli->send_request('ports',RPC::XML::array->new( $field => $value ));
45 return ref $resp ? $resp->value->[0] : { error => $resp };
49 my ($self,$data) = @_;
50 my $json = $self->e_json($data);
51 $json = Encode::decode('utf-8', $json);
52 Encode::from_to($json,'cp1250', 'utf-8');