use CWMP::Tree;
use Data::Dump qw/dump/;
use Carp qw/confess cluck/;
+use Class::Trigger;
=head1 NAME
=head1 CPE metods
+All methods described below call triggers with same name
+
=cut
my $tree = CWMP::Tree->new({ debug => 0 });
# Name/Value tags must be case insnesitive
my $value = (grep( /value/i, keys %$tag_hash ))[0];
$state->{Parameter}->{ _tag($tag_hash, 'Name', '_content') } = _tag($tag_hash, 'Value', '_content' );
+ $state->{_trigger} = 'ParameterValue';
},
];
push @$rules,
'Inform' => sub {
$state->{_dispatch} = 'InformResponse'; # what reponse to call
+ $state->{_trigger} = 'Inform';
};
=head2 GetRPCMethodsResponse
'MethodList' => sub {
my ($tag_name, $tag_hash, $context, $parent_data) = @_;
$state->{MethodList} = _tag( $tag_hash, 'string' );
+ $state->{_trigger} = 'GetRPCMethodsResponse';
};
=head2 GetParameterNamesResponse
confess "can't eval $s : $@" if ($@);
#warn "## state = dump( $state ), "\n";
+
+ $state->{_trigger} = 'GetParameterNamesResponse';
};
=head2 Fault
FaultString => _tag( $tag_hash, 'FaultString', '_content' ),
};
warn "FAULT: ", $state->{Fault}->{FaultCode}, " ", $state->{Fault}->{FaultString}, "\n";
+ $state->{_trigger} = 'Fault';
};
my $parser = XML::Rules->new(
$state = {};
$parser->parsestring( $xml );
+ if ( my $trigger = $state->{_trigger} ) {
+ warn "### call_trigger( $trigger )\n";
+ $self->call_trigger( $trigger, $state );
+ }
+ # XXX don't propagate _trigger (useful?)
+ delete( $state->{_trigger} );
return $state;
}