X-Git-Url: http://git.rot13.org/?p=perl-cwmp.git;a=blobdiff_plain;f=lib%2FCWMP%2FRequest.pm;h=51f70f3ae6416bb711c90b67388722a32020083d;hp=d4817b05eb829993a3a9ed4e516b9e93078bd7b1;hb=5ea6e09597af2a09a847b8973e30601811f52725;hpb=03eb97317af85b13a1a2c8d0f66685d763a60c32 diff --git a/lib/CWMP/Request.pm b/lib/CWMP/Request.pm index d4817b0..51f70f3 100644 --- a/lib/CWMP/Request.pm +++ b/lib/CWMP/Request.pm @@ -4,11 +4,12 @@ use warnings; use strict; use XML::Rules; -use CWMP::Tree; use Data::Dump qw/dump/; use Carp qw/confess cluck/; use Class::Trigger; +#use Devel::LeakTrace::Fast; + =head1 NAME CWMP::Request - parse SOAP request metods @@ -21,7 +22,7 @@ All methods described below call triggers with same name our $state; # FIXME check this! -my $rules = [ +our $rules = [ #_default => 'content trim', x_default => sub { my ($tag_name, $tag_hash, $context, $parent_data) = @_; @@ -130,6 +131,8 @@ sub parse { my $xml = shift || confess "no xml?"; + $state = {}; + my $parser = XML::Rules->new( # start_rules => [ # '^division_name,fax' => 'skip', @@ -144,9 +147,12 @@ sub parse { rules => $rules, ); - $state = {}; + warn "## created $parser\n"; $parser->parsestring( $xml ); + + undef $parser; + if ( my $trigger = $state->{_trigger} ) { warn "### call_trigger( $trigger )\n"; $self->call_trigger( $trigger, $state );