class Motion::ComponentConnection
Attributes
component[R]
log_helper[R]
Public Class Methods
from_state( state, serializer: Motion.serializer, log_helper: LogHelper.new, **kargs )
click to toggle source
# File lib/motion/component_connection.rb, line 7 def self.from_state( state, serializer: Motion.serializer, log_helper: LogHelper.new, **kargs ) component = serializer.deserialize(state) new(component, log_helper: log_helper.for_component(component), **kargs) end
new(component, log_helper: LogHelper.for_component(component))
click to toggle source
# File lib/motion/component_connection.rb, line 20 def initialize(component, log_helper: LogHelper.for_component(component)) @component = component @log_helper = log_helper timing("Connected") do @render_hash = component.render_hash component.process_connect end end
Public Instance Methods
broadcasts()
click to toggle source
# File lib/motion/component_connection.rb, line 94 def broadcasts component.broadcasts end
close()
click to toggle source
# File lib/motion/component_connection.rb, line 31 def close timing("Disconnected") do component.process_disconnect end true rescue => error handle_error(error, "disconnecting the component") false end
if_render_required() { |component| ... }
click to toggle source
# File lib/motion/component_connection.rb, line 79 def if_render_required(&block) timing("Rendered") do next_render_hash = component.render_hash return if @render_hash == next_render_hash && !component.awaiting_forced_rerender? yield(component) @render_hash = next_render_hash end rescue => error handle_error(error, "rendering the component") end
periodic_timers()
click to toggle source
# File lib/motion/component_connection.rb, line 98 def periodic_timers component.periodic_timers end
process_broadcast(broadcast, message)
click to toggle source
# File lib/motion/component_connection.rb, line 55 def process_broadcast(broadcast, message) timing("Processed broadcast to #{broadcast}") do component.process_broadcast broadcast, message end true rescue => error handle_error(error, "processing a broadcast to #{broadcast}") false end
process_motion(motion, event = nil)
click to toggle source
# File lib/motion/component_connection.rb, line 43 def process_motion(motion, event = nil) timing("Processed #{motion}") do component.process_motion(motion, event) end true rescue => error handle_error(error, "processing #{motion}") false end
process_periodic_timer(timer)
click to toggle source
# File lib/motion/component_connection.rb, line 67 def process_periodic_timer(timer) timing("Processed periodic timer #{timer}") do component.process_periodic_timer timer end true rescue => error handle_error(error, "processing periodic timer #{timer}") false end
Private Instance Methods
handle_error(error, context)
click to toggle source
# File lib/motion/component_connection.rb, line 110 def handle_error(error, context) log_helper.error("An error occurred while #{context}", error: error) end
timing(context, &block)
click to toggle source
# File lib/motion/component_connection.rb, line 106 def timing(context, &block) log_helper.timing(context, &block) end