Class: Milktea::Runtime
- Inherits:
-
Object
- Object
- Milktea::Runtime
- Defined in:
- lib/milktea/runtime.rb
Overview
Runtime manages message processing and execution state for Milktea applications
Instance Method Summary collapse
- #enqueue(message) ⇒ Object
-
#initialize(queue: Queue.new) ⇒ Runtime
constructor
A new instance of Runtime.
- #render? ⇒ Boolean
- #running? ⇒ Boolean
- #start ⇒ Object
- #stop ⇒ Object
- #stop? ⇒ Boolean
- #tick(model) ⇒ Object
Constructor Details
#initialize(queue: Queue.new) ⇒ Runtime
Returns a new instance of Runtime.
6 7 8 9 10 |
# File 'lib/milktea/runtime.rb', line 6 def initialize(queue: Queue.new) @queue = queue @running = false @should_render = false end |
Instance Method Details
#enqueue(message) ⇒ Object
48 49 50 |
# File 'lib/milktea/runtime.rb', line 48 def enqueue() @queue << end |
#render? ⇒ Boolean
28 29 30 |
# File 'lib/milktea/runtime.rb', line 28 def render? @should_render end |
#running? ⇒ Boolean
36 37 38 |
# File 'lib/milktea/runtime.rb', line 36 def running? @running end |
#start ⇒ Object
40 41 42 |
# File 'lib/milktea/runtime.rb', line 40 def start @running = true end |
#stop ⇒ Object
44 45 46 |
# File 'lib/milktea/runtime.rb', line 44 def stop @running = false end |
#stop? ⇒ Boolean
32 33 34 |
# File 'lib/milktea/runtime.rb', line 32 def stop? !@running end |
#tick(model) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/milktea/runtime.rb', line 12 def tick(model) = false until @queue.empty? = @queue.pop(true) # non-blocking pop model, side_effect = model.update() execute_side_effect(side_effect) # Only Message::None instances should not trigger render = true unless .is_a?(Message::None) end @should_render = model end |