/[cwmp]/google/trunk/lib/CWMP/Store.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /google/trunk/lib/CWMP/Store.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 81 - (hide annotations)
Fri Jun 22 14:59:40 2007 UTC (17 years ago) by dpavlin
Original Path: google/lib/CWMP/Store.pm
File size: 1127 byte(s)
bug fix: correctly handle state creation and update
1 dpavlin 77 # Dobrica Pavlinusic, <dpavlin@rot13.org> 06/22/07 14:35:38 CEST
2     package CWMP::Store;
3    
4     use strict;
5     use warnings;
6    
7    
8     use base qw/Class::Accessor/;
9     __PACKAGE__->mk_accessors( qw/
10     debug
11     path
12    
13 dpavlin 79 db
14 dpavlin 77 / );
15    
16 dpavlin 79 use Carp qw/confess/;
17 dpavlin 77 use Data::Dump qw/dump/;
18     use DBM::Deep;
19    
20     =head1 NAME
21    
22     CWMP::Store - parsist CPE state on disk
23    
24     =head1 METHODS
25    
26     =head2 new
27    
28     my $store = CWMP::Store->new({
29     path => '/path/to/state.db',
30     debug => 1,
31     });
32    
33     =cut
34    
35     sub new {
36     my $class = shift;
37     my $self = $class->SUPER::new( @_ );
38    
39     warn "created ", __PACKAGE__, "(", dump( @_ ), ") object\n" if $self->debug;
40    
41 dpavlin 79 $self->db(
42 dpavlin 77 DBM::Deep->new(
43     file => $self->path,
44     locking => 1,
45     autoflush => 1,
46     )
47     );
48    
49     return $self;
50     }
51    
52 dpavlin 79 =head2 update_state
53 dpavlin 77
54 dpavlin 79 $store->update_state( $ID, $state );
55    
56     =cut
57    
58     sub update_state {
59     my $self = shift;
60    
61     my ( $ID, $state ) = @_;
62    
63     confess "need ID" unless $ID;
64     confess "need state" unless $state;
65    
66    
67 dpavlin 81 if ( my $o = $self->db->get( $ID ) ) {
68     warn "## update state of $ID\n" if $self->debug;
69     $o->import( $state );
70     } else {
71     warn "## create new state for $ID\n" if $self->debug;
72     $self->db->put( $ID => $state );
73     }
74    
75 dpavlin 79 }
76 dpavlin 77 1;

  ViewVC Help
Powered by ViewVC 1.1.26