implement vendor_hook
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 7 Mar 2010 20:36:20 +0000 (20:36 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 7 Mar 2010 20:36:20 +0000 (20:36 +0000)
git-svn-id: https://perl-cwmp.googlecode.com/svn/trunk@269 836a5e1a-633d-0410-964b-294494ad4392

lib/CWMP/Session.pm

index 1d87059..02ff046 100644 (file)
@@ -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";