metasploit-framework/lib/rex/thread_factory.rb

44 lines
823 B
Ruby

# -*- coding: binary -*-
module Rex
###
#
# This class provides a wrapper around Thread.new that can provide
# additional features if a corresponding thread provider is set.
#
###
class ThreadFactory
@@provider = nil
def self.provider=(val)
@@provider = val
end
def self.spawn(name, crit, *args, &block)
if @@provider
if block
return @@provider.spawn(name, crit, *args){ |*args_copy| block.call(*args_copy) }
else
return @@provider.spawn(name, crit, *args)
end
else
t = nil
if block
t = ::Thread.new(*args){ |*args_copy| block.call(*args_copy) }
else
t = ::Thread.new(*args)
end
t[:tm_name] = name
t[:tm_crit] = crit
t[:tm_time] = Time.now
t[:tm_call] = caller
return t
end
end
end
end