X-Git-Url: http://git.rot13.org/?p=perl-cwmp.git;a=blobdiff_plain;f=lib%2FCWMP%2FServer.pm;h=ff2611c8502eceab563cbdb555cad44d486d5b50;hp=12d8702dffc078c2006f3213bcd6419ee6a90485;hb=0289fcfee0b45794f7a0f910f9d635beac54e8f2;hpb=c74d2b4d9c5d99a9bb126274a0ea2b747946fe32 diff --git a/lib/CWMP/Server.pm b/lib/CWMP/Server.pm index 12d8702..ff2611c 100644 --- a/lib/CWMP/Server.pm +++ b/lib/CWMP/Server.pm @@ -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 with value C if L 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}; }