metasploit-framework/lib/rex/ui/progress_tracker.rb

98 lines
1.4 KiB
Ruby

# -*- coding: binary -*-
module Rex
module Ui
###
#
# This module tracks the progress of an arbitrary task in a generic fashion.
# The actual implementation is left up to the thing that derives from this
# module.
#
###
class ProgressTracker
require 'rex/ui/text/progress_tracker'
def initialize
self.start = 0
self.stop = 0
self.pos = 0
end
#
# Sets start and step using a range.
#
def range=(rng)
self.start = rng.begin
self.stop = rng.end
end
#
# Sets the start and resets the position.
#
def start=(start)
@start = start
self.pos = start
end
#
# Steps with a given message and step size.
#
def step(status = nil, n = 1)
self.pos += n if (self.pos + n <= self.stop)
step_status(status)
self.pos
end
#
# Resets the current step location.
#
def reset(n = self.start)
self.pos = n
end
#
# Passes a generic status message that isn't necessarily associated
# with a step event.
#
def status(msg = nil)
end
#
# Updates the status associated with the current step.
#
def step_status(msg = nil)
end
#
# An error occurred that may result in aborting the progress.
#
def error(msg = nil)
end
#
# Progress has been aborted, the reason is supplied in msg.
#
def abort(msg = nil)
end
#
# The start of the progress.
#
attr_reader :start
#
# The last position in the progress.
#
attr_accessor :stop
#
# The current position in the progress.
#
attr_accessor :pos
end
end
end