/[cwmp]/google/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

Contents of /google/lib/CWMP/Store.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 84 - (show annotations)
Fri Jun 22 18:25:24 2007 UTC (16 years, 10 months ago) by dpavlin
File size: 1185 byte(s)
use Net::Server instead of low-level IO::Socket::INET (that will hopefully
bring us free of charge forking server, background and various other stuff
:-)
1 # 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 db
14 / );
15
16 use Carp qw/confess/;
17 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 confess "need path to state.db" unless ( $self->path );
42
43 $self->db(
44 DBM::Deep->new(
45 file => $self->path,
46 locking => 1,
47 autoflush => 1,
48 )
49 );
50
51 return $self;
52 }
53
54 =head2 update_state
55
56 $store->update_state( $ID, $state );
57
58 =cut
59
60 sub update_state {
61 my $self = shift;
62
63 my ( $ID, $state ) = @_;
64
65 confess "need ID" unless $ID;
66 confess "need state" unless $state;
67
68
69 if ( my $o = $self->db->get( $ID ) ) {
70 warn "## update state of $ID\n" if $self->debug;
71 $o->import( $state );
72 } else {
73 warn "## create new state for $ID\n" if $self->debug;
74 $self->db->put( $ID => $state );
75 }
76
77 }
78 1;

  ViewVC Help
Powered by ViewVC 1.1.26