From: Dobrica Pavlinusic Date: Sun, 7 Mar 2010 20:36:20 +0000 (+0000) Subject: implement vendor_hook X-Git-Url: http://git.rot13.org/?p=perl-cwmp.git;a=commitdiff_plain;h=d9e0cf8ed6b40d26c7eef85bac1a8360a14b1bb8 implement vendor_hook git-svn-id: https://perl-cwmp.googlecode.com/svn/trunk@269 836a5e1a-633d-0410-964b-294494ad4392 --- diff --git a/lib/CWMP/Session.pm b/lib/CWMP/Session.pm index 1d87059..02ff046 100644 --- a/lib/CWMP/Session.pm +++ b/lib/CWMP/Session.pm @@ -64,6 +64,34 @@ sub new { return $self; } +my $vendor_data = { + 'InternetGatewayDevice.ManagementServer.PeriodicInformEnable' => 1, + 'InternetGatewayDevice.ManagementServer.PeriodicInformInterval' => 17, + 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision', +}; + +sub vendor_hook { + my ( $self, $stored, $queue ) = @_; + warn "# vendor_hook ",dump($stored) if $self->debug > 2; + + my @refresh; + + foreach my $n ( keys %$vendor_data ) { + if ( $vendor_data->{$n} ne $stored->{$n} ) { + push @refresh, $n; + $queue->enqueue( 'SetParameterValues', { $n => $vendor_data->{$n} } ); + } + } + + if ( @refresh ) { + $queue->enqueue( 'GetParameterValues', [ @refresh ] ); + warn "vendor_hook SetParameterValues ", dump( @refresh ); + return $self->dispatch( 'GetParameterValues', [ @refresh ] ); + } + + return; +} + =head2 process_request One request from client/response from server cycle. Call multiple times to @@ -168,6 +196,10 @@ sub process_request { $queue->enqueue( 'GetParameterValues', [ @chunk ] ); } + } elsif ( $xml = $self->vendor_hook( $stored, $queue ) ) { + + warn "vendor_hook triggered\n"; + } else { warn ">>> empty response $to_uid";