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.
538 539 540 541 542 543 544 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 538 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.
537 538 539 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 537 def action_id @action_id end |
#causal_event_terminator_name ⇒ Object (readonly)
Returns the value of attribute causal_event_terminator_name.
537 538 539 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 537 def causal_event_terminator_name @causal_event_terminator_name end |
#future_resource ⇒ Object (readonly)
Returns the value of attribute future_resource.
537 538 539 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 537 def future_resource @future_resource end |
#headers ⇒ Object (readonly)
Returns the value of attribute headers.
537 538 539 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 537 def headers @headers end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
537 538 539 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 537 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.
558 559 560 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 558 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.
568 569 570 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 568 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.
550 551 552 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 550 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.
588 589 590 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 588 def response future_resource.resource end |
#to_s ⇒ Object
Converts this action into a protocol-valid String, ready to be sent over a socket.
575 576 577 578 579 580 581 |
# File 'lib/adhearsion/voip/asterisk/manager_interface.rb', line 575 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 |