r268@brr: dpavlin | 2007-11-25 20:20:36 +0100
[perl-cwmp.git] / lib / CWMP / Server.pm
index 12d8702..ff2611c 100644 (file)
@@ -7,8 +7,7 @@ use warnings;
 use base qw/Class::Accessor/;
 __PACKAGE__->mk_accessors( qw/
 port
-store
-default_queue
+session
 background
 debug
 
@@ -16,6 +15,7 @@ server
 / );
 
 use CWMP::Session;
+use CWMP::Queue;
 
 use Carp qw/confess/;
 use Data::Dump qw/dump/;
@@ -30,11 +30,7 @@ CWMP::Server - description
 
   my $server = CWMP::Server->new({
        port => 3333,
-       store => {
-               module => 'DBMDeep',
-               path => 'var/',
-       },
-       default_queue => [ qw/GetRPCMethods GetParameterNames/ ],                                                           
+       session => { ... },
        background => 1,
        debug => 1
   });
@@ -47,15 +43,11 @@ Options:
 
 port to listen on
 
-=item store
+=item session
 
 hash with key C<module> with value C<DBMDeep> if L<CWMP::Store::DBMDeep>
 is used. Other parametars are optional.
 
-=item default_queue
-
-commands which will be issued to every CPE on connect
-
 =back
 
 =cut
@@ -75,8 +67,7 @@ sub new {
                CWMP::Server::Helper->new({
                        proto => 'tcp',
                        port => $self->port,
-                       default_queue => $self->default_queue,
-                       store => $self->store,
+                       session => $self->session,
                        debug => $self->debug,
                        background => $self->background,
                })
@@ -100,7 +91,8 @@ package CWMP::Server::Helper;
 use warnings;
 use strict;
 
-use base qw/Net::Server/;
+#use base qw/Net::Server/;
+use base qw/Net::Server::Fork/;
 use Carp qw/confess/;
 use Data::Dump qw/dump/;
 
@@ -113,16 +105,16 @@ sub options {
        $self->SUPER::options($template);
 
        # new single-value options
-       foreach my $p ( qw/ store debug / ) {
+       foreach my $p ( qw/ session debug / ) {
                $prop->{ $p } ||= undef;
                $template->{ $p } = \$prop->{ $p };
        }
 
        # new multi-value options
-       foreach my $p ( qw/ default_queue / ) {
-               $prop->{ $p } ||= [];
-               $template->{ $p } = $prop->{ $p };
-       }
+#      foreach my $p ( qw/ default_queue / ) {
+#              $prop->{ $p } ||= [];
+#              $template->{ $p } = $prop->{ $p };
+#      }
 }
 
 
@@ -138,26 +130,22 @@ sub process_request {
        my $sock = $prop->{client};
        confess "no sock in ", ref( $self ) unless $sock;
 
-       warn "default CPE queue ( " . join(",",@{$prop->{default_queue}}) . " )\n" if defined($prop->{default_queue});
+       my $sess = $prop->{session} || confess "no session";
 
        eval  {
-               my $session = CWMP::Session->new({
-                       sock => $sock,
-                       queue => $prop->{default_queue},
-                       store => $prop->{store},
-                       debug => $prop->{debug},
-               }) || confess "can't create session";
+               $sess->{sock} = $sock;
+               $sess->{debug} = $prop->{debug};
+
+               my $session = CWMP::Session->new( $sess ) || confess "can't create session from ",dump( $sess );
 
                while ( $session->process_request ) {
-                       warn "...another one bites the dust...\n";
+                       warn "...waiting for next request from CPE...\n" if $prop->{debug};
                }
        };
 
-       if ($@) {
-               warn $@;
-       }
+       warn "ERROR: $@\n" if $@;
 
-       warn "...returning to accepting new connections\n";
+       warn "...returning to accepting new connections\n" if $prop->{debug};
 
 }