Class: Adhearsion::VoIP::Asterisk::Manager::ManagerInterface::ManagerInterfaceAction
- Inherits:
-
Object
- Object
- Adhearsion::VoIP::Asterisk::Manager::ManagerInterface::ManagerInterfaceAction
- Defined in:
- lib/adhearsion/voip/asterisk/manager_interface.rb
Overview
Each time ManagerInterface#send_action is invoked, a new ManagerInterfaceAction is instantiated.
Instance Attribute Summary collapse
-
#action_id ⇒ Object
readonly
Returns the value of attribute action_id.
-
#causal_event_terminator_name ⇒ Object
readonly
Returns the value of attribute causal_event_terminator_name.
-
#future_resource ⇒ Object
readonly
Returns the value of attribute future_resource.
-
#headers ⇒ Object
readonly
Returns the value of attribute headers.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#has_causal_events? ⇒ Boolean
Some AMI actions effectively respond with many events which collectively constitute the actual response.
-
#initialize(name, headers = {}) ⇒ ManagerInterfaceAction
constructor
A new instance of ManagerInterfaceAction.
-
#new_action_id ⇒ String
Abstracts the generation of new ActionIDs.
-
#replies_with_action_id? ⇒ Boolean
Used internally by ManagerInterface for the actions in AMI which break the protocol’s definition and do not reply with an ActionID.
-
#response ⇒ Object
If the response has simply not been received yet from Asterisk, the calling Thread will block until it comes in.
-
#to_s ⇒ Object
Converts this action into a protocol-valid String, ready to be sent over a socket.
Constructor Details
#initialize(name, headers = {}) ⇒ ManagerInterfaceAction
Returns a new instance of ManagerInterfaceAction.
635 636 637 638 639 640 641 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 635 def initialize(name, headers={}) @name = name.to_s.downcase.freeze @headers = headers.stringify_keys.freeze @action_id = new_action_id.freeze @future_resource = FutureResource.new @causal_event_terminator_name = ManagerInterface.causal_event_terminator_name_for name end |
Instance Attribute Details
#action_id ⇒ Object (readonly)
Returns the value of attribute action_id.
634 635 636 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 634 def action_id @action_id end |
#causal_event_terminator_name ⇒ Object (readonly)
Returns the value of attribute causal_event_terminator_name.
634 635 636 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 634 def causal_event_terminator_name @causal_event_terminator_name end |
#future_resource ⇒ Object (readonly)
Returns the value of attribute future_resource.
634 635 636 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 634 def future_resource @future_resource end |
#headers ⇒ Object (readonly)
Returns the value of attribute headers.
634 635 636 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 634 def headers @headers end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
634 635 636 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 634 def name @name end |
Instance Method Details
#has_causal_events? ⇒ Boolean
Some AMI actions effectively respond with many events which collectively constitute the actual response. These Must be handled specially by the protocol parser, so this method helps inform the parser.
655 656 657 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 655 def has_causal_events? ManagerInterface.has_causal_events?(@name, @headers) end |
#new_action_id ⇒ String
Abstracts the generation of new ActionIDs. This could be implemented virutally any way, provided each invocation returns something unique, so this will generate a GUID and return it.
665 666 667 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 665 def new_action_id new_guid # Implemented in lib/adhearsion/foundation/pseudo_guid.rb end |
#replies_with_action_id? ⇒ Boolean
Used internally by ManagerInterface for the actions in AMI which break the protocol’s definition and do not reply with an ActionID.
647 648 649 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 647 def replies_with_action_id? ManagerInterface.replies_with_action_id?(@name, @headers) end |
#response ⇒ Object
If the response has simply not been received yet from Asterisk, the calling Thread will block until it comes in. Once the response comes in, subsequent calls immediately return a reference to the ManagerInterfaceResponse object.
685 686 687 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 685 def response future_resource.resource end |
#to_s ⇒ Object
Converts this action into a protocol-valid String, ready to be sent over a socket.
672 673 674 675 676 677 678 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 672 def to_s @textual_representation ||= ( "Action: #{@name}\r\nActionID: #{@action_id}\r\n" + @headers.map { |(key,value)| "#{key}: #{value}" }.join("\r\n") + (@headers.any? ? "\r\n\r\n" : "\r\n") ) end |