$xml = $self->dispatch( $job->dispatch );
$job->finish;
} else {
- warn ">>> empty response $to_uid";
- $state->{NoMoreRequests} = 1;
- $xml = '';
+ my $stored = $self->store->get_state( $uid );
+ if ( ! defined $stored->{ParameterInfo} ) {
+ $xml = $self->dispatch( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] );
+ } else {
+ my @params = grep { m/\.$/ } keys %{ $stored->{ParameterInfo} };
+ if ( @params ) {
+ warn "# GetParameterNames ", dump( @params );
+ $xml = $self->dispatch( 'GetParameterNames', [ shift @params, 1 ] );
+ foreach ( @params ) {
+ $queue->enqueue( 'GetParameterNames', [ $_, 1 ] );
+ delete( $stored->{ParameterInfo}->{ $_ } );
+ }
+ $self->store->set_state( $uid, $stored );
+ } else {
+ warn ">>> empty response $to_uid";
+ $state->{NoMoreRequests} = 1;
+ $xml = '';
+ }
+ }
}
my $status = length($xml) ? 200 : 204;
}
+
+=head2 set_state
+
+ $store->set_state( $uid, $state );
+
+=cut
+
+sub set_state {
+ my $self = shift;
+ return $self->current_store->set_state( @_ );
+}
+
+
=head2 all_uids
my @cpe = $store->all_uids;
return;
}
+
+=head2 set_state
+
+ $store->set_state( $uid, $state );
+
+=cut
+
+sub set_state {
+ my ( $self, $uid, $state ) = @_;
+ my $file = $self->file( $uid );
+ return $self->save_hash( $file, $state );
+}
+
+
=head2 all_uids
my @uids = $store->all_uids;
is_deeply( $state, $store_state, 'state ID same as uid' );
- ok( $store->update_state( {
+ $state = {
DeviceID => {
SerialNumber => 123456,
},
baz => 12345
- } ), 'update_state existing' );
+ };
- $state->{baz} = 12345;
+ ok( $store->set_state( 123456, $state ), 'set_state' );
is_deeply( $store->get_state( 123456 ), $state, 'get_state' );