metasploit-framework/lib/metasploit/framework/thread_factory_provider.rb

26 lines
952 B
Ruby

# Wraps {Msf::Framework} so that {Msf::Framework#threads} is only created on the first call to {#spawn} by
# {Rex::ThreadFactory#spawn}, which allows the threads used by {Msf::ThreadManager} to be created lazily.
#
# @example Setting Rex::ThreadFactory.provider and spawning threads
# Rex::ThreadFactory.provider = Metasploit::Framework::ThreadFactoryProvider.new(framework: framework)
# # framework.threads created here
# Rex::ThreadFactory.spawn("name", false) { ... }
#
class Metasploit::Framework::ThreadFactoryProvider < Metasploit::Model::Base
#
# Attributes
#
# @!attribute framework
# The framework managing the spawned threads.
#
# @return [Msf::Framework]
attr_accessor :framework
# Spawns a thread monitored by {Msf::ThreadManager} in {Msf::Framework#threads}.
#
# (see Msf::ThreadManager#spawn)
def spawn(name, critical, *args, &block)
framework.threads.spawn(name, critical, *args, &block)
end
end