Parent

Methods

Class/Module Index [+]

Quicksearch

Rex::Job

This class is the concrete representation of an abstract job.

Attributes

ctx[R]

Some job context.

jid[R]

The job identifier as assigned by the job container.

name[R]

The name of the job.

start_time[R]

The time at which this job was started.

Public Class Methods

new(container, jid, name, ctx, run_proc, clean_proc) click to toggle source

Creates an individual job instance and initializes it with the supplied parameters.

# File lib/rex/job_container.rb, line 14
def initialize(container, jid, name, ctx, run_proc, clean_proc)
        self.container  = container
        self.jid        = jid
        self.name       = name
        self.run_proc   = run_proc
        self.clean_proc = clean_proc
        self.ctx        = ctx
        self.start_time = nil
end

Public Instance Methods

start(async = false) click to toggle source

Runs the job in the context of its own thread if the async flag is false. Otherwise, the job is run inline.

# File lib/rex/job_container.rb, line 28
def start(async = false)
        self.start_time = Time.now
        if (async)
                self.job_thread = Rex::ThreadFactory.spawn("JobID(#{jid})-#{name}", false) {
                        # Deschedule our thread momentarily
                        ::IO.select(nil, nil, nil, 0.01)

                        begin
                                run_proc.call(ctx)
                        ensure
                                clean_proc.call(ctx)
                                container.remove_job(self)
                        end
                }
        else
                begin
                        run_proc.call(ctx)
                rescue ::Exception
                        container.stop_job(jid)
                        raise $!
                end
        end
end
stop() click to toggle source

Stops the job if it's currently running and calls its cleanup procedure

# File lib/rex/job_container.rb, line 55
def stop
        if (self.job_thread)
                self.job_thread.kill
                self.job_thread = nil
        end

        clean_proc.call(ctx) if (clean_proc)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.