Class: Arachni::Database::Queue
- Defined in:
- lib/arachni/database/queue.rb
Overview
Flat-file Queue implementation
Behaves pretty much like a Ruby Queue however it transparently serializes and saves its values to the file-system under the OS’s temp directory.
It’s pretty useful when you want to reduce memory footprint without having to refactor any code since it behaves just like Ruby’s implementation.
Instance Method Summary collapse
-
#<<(obj) ⇒ Object
(also: #push, #enq)
Adds an object to the queue.
-
#clear ⇒ Object
Removes all objects from the Queue.
-
#empty? ⇒ Bool
True if the Queue if empty, false otherwise.
-
#initialize(*args) ⇒ Queue
constructor
A new instance of Queue.
-
#pop ⇒ Object
(also: #deq, #shift)
Removes an object from the Queue and returns it.
-
#size ⇒ Integer
(also: #length)
Size of the Queue, the number of objects it currently holds.
Constructor Details
#initialize(*args) ⇒ Queue
Returns a new instance of Queue.
39 40 41 42 |
# File 'lib/arachni/database/queue.rb', line 39 def initialize( *args ) super( *args ) @q = ::Queue.new end |
Instance Method Details
#<<(obj) ⇒ Object Also known as: push, enq
Adds an object to the queue.
49 50 51 |
# File 'lib/arachni/database/queue.rb', line 49 def <<( obj ) @q << dump( obj ) end |
#clear ⇒ Object
Removes all objects from the Queue.
88 89 90 91 92 93 94 |
# File 'lib/arachni/database/queue.rb', line 88 def clear while( !@q.empty? ) path = @q.pop next if !path delete_file( path ) end end |
#empty? ⇒ Bool
True if the Queue if empty, false otherwise.
81 82 83 |
# File 'lib/arachni/database/queue.rb', line 81 def empty? @q.empty? end |
#pop ⇒ Object Also known as: deq, shift
Removes an object from the Queue and returns it.
60 61 62 |
# File 'lib/arachni/database/queue.rb', line 60 def pop return load_and_delete_file( @q.pop ) end |
#size ⇒ Integer Also known as: length
Size of the Queue, the number of objects it currently holds.
71 72 73 |
# File 'lib/arachni/database/queue.rb', line 71 def size @q.size end |