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/;
23 CWMP::Queue - implement commands queue for CPE
29 my $obj = CWMP::Queue->new({
30 id => 'CPE_serial_number',
38 my $self = $class->SUPER::new( @_ );
40 die "need id" unless $self->id;
42 warn "created ", __PACKAGE__, "(", dump( @_ ), ") object\n" if $self->debug;
44 my $dir = File::Spec->catfile('queue',$self->id);
47 mkpath $dir || die "can't create $dir: $!";
48 print "created new queue $dir\n";
53 if ( ! defined( $self->{dq}->{$id} ) ) {
54 $self->{dq}->{$id} = IPC::DirQueue->new({
59 warn "## created queue object for CPE $id path $dir\n" if $self->debug;
77 my $data = {@_} || confess "need data";
79 warn "## enqueue( $id, ", dump( $data ), " )\n" if $self->debug;
81 $self->{dq}->{$id}->enqueue_string( $id, $data );
86 my $data = $q->dequeue;
95 my $data = $self->{dq}->{$id}->pickup_queued_job();
96 return unless defined $data;
98 warn "## dequeue( $id ) = ", dump( $data ), " )\n" if $self->debug;
100 return $data->{metadata};