Class: Hakuban::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/hakuban/engine.rb

Constant Summary collapse

@@descendants =
[]

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeEngine

Returns a new instance of Engine.



5
6
7
8
# File 'lib/hakuban/engine.rb', line 5

def initialize
	raise "Hakuban::Engine is abstract"  if self.class == Hakuban::Engine
	@contracts = []
end

Class Method Details

.enginesObject



33
34
35
# File 'lib/hakuban/engine.rb', line 33

def self.engines
	@@descendants
end

.inherited(subclass) ⇒ Object



38
39
40
# File 'lib/hakuban/engine.rb', line 38

def self.inherited(subclass)
	@@descendants << subclass
end

Instance Method Details

#init(exchange) ⇒ Object



18
19
20
# File 'lib/hakuban/engine.rb', line 18

def init(exchange)
	raise "Hakuban::Engine::init is a pure virtual function, descendants should bring their own implementation"
end

#start(exchange) ⇒ Object



11
12
13
14
15
16
# File 'lib/hakuban/engine.rb', line 11

def start(exchange)
	@contracts.concat([init(exchange)])
	@contracts.flatten!
	@contracts.compact!
	@contracts.uniq!
end

#stopObject



22
23
24
25
26
# File 'lib/hakuban/engine.rb', line 22

def stop
	@contracts.each { |contract|
		contract.drop
	}
end