Sha256: 8c89ed86130e0d8ab9e27361fdc0798dc2f478abea39de0051535505d6c321d8
Contents?: true
Size: 1.88 KB
Versions: 2
Compression:
Stored size: 1.88 KB
Contents
# encoding: utf-8 module Punchblock module Component class ComponentNode < CommandNode include HasGuardedHandlers def initialize(*args) super @complete_event_resource = FutureResource.new register_internal_handlers end def register_internal_handlers register_handler :internal, Event::Complete do |event| self.complete_event = event throw :pass end end def add_event(event) trigger_handler :internal, event end def trigger_event_handler(event) trigger_handler :event, event end def register_event_handler(*guards, &block) register_handler :event, *guards, &block end def write_action(action) client.execute_command action, :target_call_id => target_call_id, :component_id => component_id action end def response=(other) if other.is_a?(Ref) @component_id = other.id client.register_component self if client end super end def complete_event(timeout = nil) @complete_event_resource.resource timeout end def complete_event=(other) return if @complete_event_resource.set_yet? client.delete_component_registration self if client complete! @complete_event_resource.resource = other end ## # Create a Rayo stop message # # @return [Stop] a Rayo stop message # def stop_action Stop.new :component_id => component_id, :target_call_id => target_call_id end ## # Sends a Rayo stop message for the current component # def stop!(options = {}) raise InvalidActionError, "Cannot stop a #{self.class.name.split("::").last} that is #{state}" unless executing? stop_action.tap { |action| write_action action } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
punchblock-1.9.4 | lib/punchblock/component/component_node.rb |
punchblock-1.9.3 | lib/punchblock/component/component_node.rb |