Sha256: 93c7155271f05e77cb5e321ee974a3c073e357a25828b17e7fe206e38a076d99
Contents?: true
Size: 1.44 KB
Versions: 1
Compression:
Stored size: 1.44 KB
Contents
require 'application.rb' class Service<Application def self.event(name,arity=nil) name=name.to_s onName="on"+name[0..0].upcase+name[1..-1] isName="is"+name[0..0].upcase+name[1..-1] assert{not self.respond_to?(onName)} @@eventArity||={} if arity @@eventArity[name]=arity end self.module_eval(" def #{onName}(&block) assert{block_given?} if @@eventArity[:#{name}] assert{@@eventArity[:#{name}]==block.arity} end @eventReceivers||={} @eventReceivers[:#{name}]||=[] @eventReceivers[:#{name}] << block end private def #{isName}(*args) if @@eventArity[:#{name}] assert{@@eventArity[:#{name}]==args.length} end @eventReceivers||={} @eventReceivers[:#{name}]||=[] @eventReceivers[:#{name}].each{|b| b.call(*args) } end ") end def initialize(cluster,options,name) super(cluster,options) @name=name @cronMutex=Mutex.new provides(name) end def cronTime @options[:cronTime]||10 end def run @threads << Thread.new { while not quit? begin runCron rescue Object=>e log e log e.backtrace if e.is_a?(Exception) end sleep(cronTime) end } end def stop super end def runCron @cronMutex.synchronize { cron } end def cron end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
appswarm-0.0.1 | lib/appswarm/service.rb |