logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Test2::Harness::Util::Queue - Representation of a queue.

Authors

       Chad Granum <exodist@cpan.org>

Description

       This module represents a queue, stored as a jsonl file.

Maintainers

       Chad Granum <exodist@cpan.org>

Methods

       $path = $queue->file
           The filename used for the queue

   READING
       $queue->reset()
           Restart reading the queue.

       @items = $queue->poll()
           Get  more  items  from the queue. May need to call it multiple times, specially if another process is
           still writing to the queue.

           Returns an empty list if no items are available yet.

           Returns 'undef' to terminate the list.

       $bool = $queue->ended()
           Check if the queue has ended.

Name

       Test2::Harness::Util::Queue - Representation of a queue.

Source

       The source code repository for Test2-Harness can be found at http://github.com/Test-More/Test2-Harness/.

Synopsis

           use Test2::Harness::Util::Queue;

           my $queue = Test2::Harness::Util::Queue->new(file => '/path/to/queue.jsonl');

           $queue->start(); # Create the queue

           $queue->enqueue({foo => 'bar', baz => 'bat'});
           $queue->enqueue({foo => 'bar2', baz => 'bat2'});
           ...

           $queue->end();

       Then in another processs:

           use Test2::Harness::Util::Queue;

           my $queue = Test2::Harness::Util::Queue->new(file => '/path/to/queue.jsonl');

           my @items;
           while (1) {
               @items = $queue->poll();
               while (@items) {
                   my $item = shift @items or last;

                   ... process $item
               }

               # Queue ends with an 'undef' entry
               last if @items && !defined($items[0]);
           }

Writing

       $queue->start()
           Open the queue file for writing.

       $queue->enqueue(\%HASHREF)
           Add an item to the queue.

       $queue->end()
           Terminate the queue.

See Also