r143@llin (orig r142): dpavlin | 2007-10-28 00:02:50 +0200
[perl-cwmp.git] / lib / CWMP / Server.pm
index 0a67293..12d8702 100644 (file)
@@ -7,7 +7,7 @@ use warnings;
 use base qw/Class::Accessor/;
 __PACKAGE__->mk_accessors( qw/
 port
-store_path
+store
 default_queue
 background
 debug
@@ -30,7 +30,10 @@ CWMP::Server - description
 
   my $server = CWMP::Server->new({
        port => 3333,
-       store_path => 'state.db',
+       store => {
+               module => 'DBMDeep',
+               path => 'var/',
+       },
        default_queue => [ qw/GetRPCMethods GetParameterNames/ ],                                                           
        background => 1,
        debug => 1
@@ -44,9 +47,10 @@ Options:
 
 port to listen on
 
-=item store_path
+=item store
 
-path to L<DBM::Deep> database file to preserve state
+hash with key C<module> with value C<DBMDeep> if L<CWMP::Store::DBMDeep>
+is used. Other parametars are optional.
 
 =item default_queue
 
@@ -72,7 +76,7 @@ sub new {
                        proto => 'tcp',
                        port => $self->port,
                        default_queue => $self->default_queue,
-                       store_path => $self->store_path,
+                       store => $self->store,
                        debug => $self->debug,
                        background => $self->background,
                })
@@ -109,7 +113,7 @@ sub options {
        $self->SUPER::options($template);
 
        # new single-value options
-       foreach my $p ( qw/ store_path debug / ) {
+       foreach my $p ( qw/ store debug / ) {
                $prop->{ $p } ||= undef;
                $template->{ $p } = \$prop->{ $p };
        }
@@ -136,15 +140,21 @@ sub process_request {
 
        warn "default CPE queue ( " . join(",",@{$prop->{default_queue}}) . " )\n" if defined($prop->{default_queue});
 
-       my $session = CWMP::Session->new({
-               sock => $sock,
-               queue => $prop->{default_queue},
-               store_path => $prop->{store_path},
-               debug => $prop->{debug},
-       }) || confess "can't create session";
-
-       while ( $session->process_request ) {
-               warn "...another one bites the dust...\n";
+       eval  {
+               my $session = CWMP::Session->new({
+                       sock => $sock,
+                       queue => $prop->{default_queue},
+                       store => $prop->{store},
+                       debug => $prop->{debug},
+               }) || confess "can't create session";
+
+               while ( $session->process_request ) {
+                       warn "...another one bites the dust...\n";
+               }
+       };
+
+       if ($@) {
+               warn $@;
        }
 
        warn "...returning to accepting new connections\n";