Sha256: 48635ec2a770f6284fc775af38c8ccaddbbcd8683768c3eb49022523c5a6b653
Contents?: true
Size: 894 Bytes
Versions: 4
Compression:
Stored size: 894 Bytes
Contents
module DeadlySerious module Engine class MasterMind attr_reader :factory def self.new_instance pid = Process.pid if @master.nil? || @master[:pid] != pid @master = {pid: pid, master: self.new} end @master[:master] end def initialize @factory = ZMQ::Context.new @counter = 1 @minions = [] end def spawn_minion minion_brain = yield(@factory, @counter) @counter += 1 Minion.new(self, minion_brain).tap { |m| @minions << m } rescue ZMQ::Error => e raise if e.message !~ /has been destroyed/ @factory = ZMQ::Context.new retry end def destroy_body_of(minion) @minions.delete(minion) suicide if @minions.empty? end private def suicide @factory.destroy end end end end
Version data entries
4 entries across 4 versions & 1 rubygems