projects
/
perl-cwmp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
r228@brr: dpavlin | 2007-11-18 13:58:05 +0100
[perl-cwmp.git]
/
lib
/
CWMP
/
Store.pm
diff --git
a/lib/CWMP/Store.pm
b/lib/CWMP/Store.pm
index
3b61924
..
6d9a784
100644
(file)
--- a/
lib/CWMP/Store.pm
+++ b/
lib/CWMP/Store.pm
@@
-66,49
+66,33
@@
sub current_store {
confess "unknown store module $module not one of ", dump( $self->possible_stores ) unless $s;
confess "unknown store module $module not one of ", dump( $self->possible_stores ) unless $s;
-
warn "#### current store = $s\n" if $self->debug > 4;
+
#
warn "#### current store = $s\n" if $self->debug > 4;
return $s;
}
=head2 update_state
return $s;
}
=head2 update_state
- $store->update_state( ID => $ID, $state );
- $store->update_state( uid => $uid, $state );
+ $store->update_state( $state );
=cut
sub update_state {
my $self = shift;
=cut
sub update_state {
my $self = shift;
- my ( $
k, $v, $
state ) = @_;
+ my ( $state ) = @_;
- confess "need ID or uid" unless $k =~ m/^(ID|uid)$/;
- confess "need $k value" unless $v;
confess "need state" unless $state;
confess "need state" unless $state;
- warn "#### update_state( $k => $v, ", dump( $state ), " )\n" if $self->debug > 4;
-
- my $uid;
-
- if ( $k eq 'ID' ) {
- if ( $uid = $self->ID_to_uid( $v, $state ) ) {
- # nop
- } else {
- warn "## no uid for $v, first seen?\n" if $self->debug;
- return;
- }
- } else {
- $uid = $v;
- }
+ my $uid = $self->state_to_uid( $state );
+ warn "#### update_state( ", dump( $state ), " ) for $uid\n" if $self->debug > 2;
$self->current_store->update_uid_state( $uid, $state );
}
=head2 get_state
$self->current_store->update_uid_state( $uid, $state );
}
=head2 get_state
- my $state = $store->get_state( ID => $ID );
- my $state = $store->get_state( uid => $uid );
+ my $state = $store->get_state( $uid );
Returns normal unblessed hash (actually, in-memory copy of state in database).
Returns normal unblessed hash (actually, in-memory copy of state in database).
@@
-116,24
+100,10
@@
Returns normal unblessed hash (actually, in-memory copy of state in database).
sub get_state {
my $self = shift;
sub get_state {
my $self = shift;
- my ( $k, $v ) = @_;
- confess "need ID or uid" unless $k =~ m/^(ID|uid)$/;
- confess "need $k value" unless $v;
-
- warn "#### get_state( $k => $v )\n" if $self->debug > 4;
+ my ( $uid ) = @_;
+ confess "need uid" unless $uid;
- my $uid;
-
- if ( $k eq 'ID' ) {
- if ( $uid = $self->ID_to_uid( $v ) ) {
- # nop
- } else {
- warn "## no uid for $v so no state!\n" if $self->debug;
- return;
- }
- } else {
- $uid = $v;
- }
+ warn "#### get_state( $uid )\n" if $self->debug > 4;
return $self->current_store->get_state( $uid );
return $self->current_store->get_state( $uid );
@@
-152,45
+122,25
@@
sub all_uids {
return @cpes;
}
return @cpes;
}
-=head2
ID
_to_uid
+=head2
state
_to_uid
- my $CPE_uid = $store->ID_to_uid( $
ID, $
state );
+ my $CPE_uid = $store->ID_to_uid( $state );
It uses C<< DeviceID.SerialNumber >> from C<Inform> message as unique ID
for each CPE.
=cut
It uses C<< DeviceID.SerialNumber >> from C<Inform> message as unique ID
for each CPE.
=cut
-my $session;
-
-sub ID_to_uid {
+sub state_to_uid {
my $self = shift;
my $self = shift;
- my ( $ID, $state ) = @_;
-
- confess "need ID" unless $ID;
-
- warn "#### ID_to_uid",dump( $ID, $state ),$/ if $self->debug > 4;
-
- $session->{ $ID }->{last_seen} = time();
-
- my $uid;
+ my ( $state ) = @_;
- if ( $uid = $session->{ $ID }->{ ID_to_uid } ) {
- return $uid;
- } elsif ( $uid = $state->{DeviceID}->{SerialNumber} ) {
- warn "## created new session for $uid session $ID\n" if $self->debug;
- $session->{ $ID } = {
- last_seen => time(),
- ID_to_uid => $uid,
- };
- return $uid;
- } else {
- warn "## can't find uid for ID $ID, first seen?\n";
- }
+ warn "#### state_to_uid",dump( $state ),$/ if $self->debug > 4;
- # TODO: expire sessions longer than 30m
+ my $uid = $state->{DeviceID}->{SerialNumber} ||
+ confess "no DeviceID.SerialNumber in ",dump( $state );
- return;
+ return
$uid
;
}
1;
}
1;