File Coverage

lib/WWW/Crawler/Mojo/Queue.pm
Criterion Covered Total %
statement 12 18 66.6
branch n/a
condition n/a
subroutine 4 10 40.0
pod 6 6 100.0
total 22 34 64.7


line stmt bran cond sub pod time code
1             package WWW::Crawler::Mojo::Queue;
2 10     10   3803 use strict;
  10         18  
  10         236  
3 10     10   41 use warnings;
  10         15  
  10         181  
4 10     10   38 use utf8;
  10         14  
  10         38  
5 10     10   213 use Mojo::Base -base;
  10         16  
  10         48  
6              
7 0     0 1   sub dequeue { die 'Must be implemented by sub classes' }
8 0     0 1   sub enqueue { die 'Must be implemented by sub classes' }
9 0     0 1   sub length { die 'Must be implemented by sub classes' }
10 0     0 1   sub next { die 'Must be implemented by sub classes' }
11 0     0 1   sub requeue { die 'Must be implemented by sub classes' }
12 0     0 1   sub shuffle { die 'Must be implemented by sub classes' }
13              
14             1;
15              
16             =head1 NAME
17              
18             WWW::Crawler::Mojo::Queue - Crawler queue base class
19              
20             =head1 SYNOPSIS
21              
22             my $queue = WWW::Crawler::Mojo::Queue::Memory->new;
23             $queue->enqueue($job1);
24             $queue->enqueue($job2);
25             say $queue->length # 2
26             $job3 = $queue->next(); # $job3 = $job1
27             $job4 = $queue->dequeue(); # $job4 = $job1
28             say $queue->length # 1
29              
30             =head1 DESCRIPTION
31              
32             This class represents a FIFO queue.
33              
34             =head1 METHODS
35              
36             =head2 dequeue
37              
38             Shifts the oldest job and returns it.
39              
40             my $job = $queue->deuque;
41              
42             =head2 enqueue
43              
44             $queue->enqueue($job);
45              
46             Pushes a job unless the job has been already pushed before. Returns the job if
47             actually enqueued otherwise returns undef.
48              
49             =head2 next
50              
51             Returns the job which will be dequeued next. It also accept an offset to get any
52             future job.
53              
54             $queue->next; # meaning $queue->next(0)
55             $queue->next(1);
56             $queue->next(2);
57              
58             =head2 length
59              
60             Returns queue length
61              
62             say $queue->length
63              
64             =head2 requeue
65              
66             Pushes a job regardless of the job has been enqueued before or not.
67              
68             $queue->requeue($job);
69              
70             =head2 shuffle
71              
72             Shuffles the queue array.
73              
74             $queue->shuffle;
75              
76             =head1 AUTHOR
77              
78             Keita Sugama, Esugama@jamadam.comE
79              
80             =head1 COPYRIGHT AND LICENSE
81              
82             Copyright (C) Keita Sugama.
83              
84             This program is free software; you can redistribute it and/or
85             modify it under the same terms as Perl itself.
86              
87             =cut