7 use base qw/Class::Accessor/;
8 __PACKAGE__->mk_accessors( qw/
14 #use Carp qw/confess/;
15 use Data::Dump qw/dump/;
17 use File::Path qw/mkpath/;
24 CWMP::Queue - implement commands queue for CPE
30 my $obj = CWMP::Queue->new({
31 id => 'CPE_serial_number',
39 my $self = $class->SUPER::new( @_ );
41 die "need id" unless $self->id;
43 warn "created ", __PACKAGE__, "(", dump( @_ ), ") object\n" if $self->debug;
45 my $dir = File::Spec->catfile('queue',$self->id);
48 mkpath $dir || die "can't create $dir: $!";
49 print "created new queue $dir\n";
54 if ( ! defined( $self->{dq}->{$id} ) ) {
55 $self->{dq}->{$id} = IPC::DirQueue->new({
60 warn "## created queue object for CPE $id path $dir\n" if $self->debug;
79 warn "## enqueue( $id, ", dump( @_ ), " )\n" if $self->debug;
81 $self->{dq}->{$id}->enqueue_string( Dump( @_ ) );
86 my $job = $q->dequeue;
87 my $dispatch = $job->dispatch;
88 # after dispatch is processed
98 my $job = $self->{dq}->{$id}->pickup_queued_job();
99 return unless defined $job;
101 warn "## dequeue( $id ) = ", dump( $job ), " )\n" if $self->debug;
103 return CWMP::Queue::Job->new({ job => $job });
106 package CWMP::Queue::Job;
108 use base qw/Class::Accessor/;
109 __PACKAGE__->mk_accessors( qw/
113 use YAML qw/LoadFile/;
117 my $path = $self->job->get_data_path || die "get_data_path?";
118 return LoadFile( $path ) || die "can't read $path: $!";