Dezi-App
view release on metacpan or search on metacpan
lib/Dezi/Queue.pm view on Meta::CPAN
file list.
=head1 METHODS
See Dezi::Class.
=cut
=head2 BUILD
Overrides base method. Called internally by new().
=cut
sub BUILD {
my $self = shift;
$self->{q} ||= [];
}
=head2 put( I<item> )
Add I<item> to the queue. Default is to push() it to end of queue.
=cut
sub put {
my $self = shift;
push( @{ $self->{q} }, @_ );
}
=head2 get
Returns the next item. Default is to shift() it from the front of the queue.
=cut
sub get {
my $self = shift;
$self->{locks} ||= {};
my $v = shift( @{ $self->{q} } );
if ( $self->{locks}->{$v}++ ) {
return undef;
}
return $v;
}
=head2 remove( I<item> )
Removes I<item> from the queue (unlocks it).
=cut
sub remove {
my $self = shift;
my $v = shift;
return delete $self->{locks}->{$v};
}
=head2 clean
Removes all locked items from the queue.
=cut
sub clean {
my $self = shift;
delete $self->{locks};
}
=head2 peek
Returns the next item value, but leaves it on the stack.
=cut
sub peek {
return $_[0]->{q}->[0];
}
=head2 size
Returns the number of items currently in the queue.
=cut
sub size {
return scalar( @{ $_[0]->{q} } );
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=head1 AUTHOR
Peter Karman, E<lt>perl@peknet.comE<gt>
=head1 BUGS
Please report any bugs or feature requests to C<bug-swish-prog at rt.cpan.org>, or through
the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Dezi-App>.
I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Dezi
You can also look for information at:
=over 4
=item * Mailing list
L<http://lists.swish-e.org/listinfo/users>
( run in 0.621 second using v1.01-cache-2.11-cpan-5511b514fd6 )