adhearsion 0.8.6 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +24 -0
- data/Rakefile +3 -1
- data/adhearsion.gemspec +21 -4
- data/app_generators/ahn/templates/components/disabled/restful_rpc/restful_rpc.rb +6 -2
- data/app_generators/ahn/templates/config/startup.rb +11 -2
- data/lib/adhearsion.rb +7 -1
- data/lib/adhearsion/component_manager.rb +67 -2
- data/lib/adhearsion/foundation/all.rb +7 -1
- data/lib/adhearsion/foundation/blank_slate.rb +1 -3
- data/lib/adhearsion/initializer.rb +1 -2
- data/lib/adhearsion/initializer/asterisk.rb +2 -2
- data/lib/adhearsion/initializer/configuration.rb +16 -5
- data/lib/adhearsion/tasks.rb +1 -0
- data/lib/adhearsion/tasks/components.rb +32 -0
- data/lib/adhearsion/version.rb +3 -3
- data/lib/adhearsion/voip/asterisk/commands.rb +44 -16
- data/lib/adhearsion/voip/asterisk/config_generators/voicemail.conf.rb +2 -2
- data/lib/adhearsion/voip/asterisk/manager_interface.rb +14 -13
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb +134 -134
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb +63 -10
- data/lib/adhearsion/voip/asterisk/manager_interface/ami_messages.rb +1 -1
- data/lib/adhearsion/voip/asterisk/special_dial_plan_managers.rb +2 -2
- data/lib/adhearsion/voip/call.rb +11 -11
- data/lib/adhearsion/voip/call_routing.rb +1 -1
- data/lib/adhearsion/voip/dial_plan.rb +15 -6
- data/lib/adhearsion/voip/dsl/dialing_dsl.rb +1 -1
- data/lib/adhearsion/voip/dsl/dialing_dsl/dialing_dsl_monkey_patches.rb +1 -1
- data/lib/adhearsion/voip/dsl/dialplan/dispatcher.rb +1 -1
- data/lib/adhearsion/voip/dsl/dialplan/parser.rb +4 -6
- data/lib/adhearsion/voip/dsl/numerical_string.rb +1 -3
- data/lib/adhearsion/voip/freeswitch/basic_connection_manager.rb +2 -2
- data/lib/adhearsion/voip/freeswitch/freeswitch_dialplan_command_factory.rb +2 -2
- data/lib/adhearsion/voip/freeswitch/oes_server.rb +1 -1
- data/lib/adhearsion/voip/menu_state_machine/matchers.rb +1 -1
- data/lib/adhearsion/voip/menu_state_machine/menu_builder.rb +1 -1
- data/lib/theatre/callback_definition_loader.rb +1 -1
- metadata +78 -19
@@ -50,26 +50,28 @@ module Adhearsion
|
|
50
50
|
|
51
51
|
# Utility method to read from pbx. Hangup if nil.
|
52
52
|
def read
|
53
|
-
|
53
|
+
from_pbx.gets.tap do |message|
|
54
54
|
# AGI has many conditions that might indicate a hangup
|
55
55
|
raise Hangup if message.nil?
|
56
56
|
|
57
57
|
ahn_log.agi.debug "<<< #{message}"
|
58
58
|
|
59
59
|
code, rest = *message.split(' ', 2)
|
60
|
-
|
61
|
-
if code == "511"
|
62
|
-
# '511' Command Not Permitted on a dead channel
|
63
|
-
ahn_log.agi.debug "AGI 500 error. Raising hangup"
|
64
|
-
raise Hangup
|
65
|
-
end
|
66
60
|
|
67
|
-
|
68
|
-
|
69
|
-
#
|
70
|
-
|
71
|
-
|
72
|
-
|
61
|
+
case code.to_i
|
62
|
+
when 510
|
63
|
+
# This error is non-fatal for the call
|
64
|
+
ahn_log.agi.warn "510: Invalid or unknown AGI command"
|
65
|
+
when 511
|
66
|
+
# 511 Command Not Permitted on a dead channel
|
67
|
+
ahn_log.agi.debug "511: Dead channel. Raising Hangup"
|
68
|
+
raise Hangup
|
69
|
+
when 520
|
70
|
+
# This error is non-fatal for the call
|
71
|
+
ahn_log.agi.warn "520: Invalid command syntax"
|
72
|
+
when (500..599)
|
73
|
+
# Assume this error is non-fatal for the call and try to keep running
|
74
|
+
ahn_log.agi.warn "#{code}: Unknown AGI protocol error."
|
73
75
|
end
|
74
76
|
|
75
77
|
# If the message starts with HANGUP it's a silly 1.6 OOB message
|
@@ -679,7 +681,33 @@ module Adhearsion
|
|
679
681
|
def set_variable(variable_name, value)
|
680
682
|
response("SET VARIABLE", variable_name, value) == "200 result=1"
|
681
683
|
end
|
682
|
-
|
684
|
+
|
685
|
+
# Issue the command to add a custom SIP header to the current call channel
|
686
|
+
# example use: sip_add_header("x-ahn-test", "rubyrox")
|
687
|
+
#
|
688
|
+
# @param[String] the name of the SIP header
|
689
|
+
# @param[String] the value of the SIP header
|
690
|
+
#
|
691
|
+
# @return [String] the Asterisk response
|
692
|
+
#
|
693
|
+
# @see http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+SIPAddHeader Asterisk SIPAddHeader
|
694
|
+
def sip_add_header(header, value)
|
695
|
+
execute("SIPAddHeader", "#{header}: #{value}") == "200 result=1"
|
696
|
+
end
|
697
|
+
|
698
|
+
# Issue the command to fetch a SIP header from the current call channel
|
699
|
+
# example use: sip_get_header("x-ahn-test")
|
700
|
+
#
|
701
|
+
# @param[String] the name of the SIP header to get
|
702
|
+
#
|
703
|
+
# @return [String] the Asterisk response
|
704
|
+
#
|
705
|
+
# @see http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+SIPGetHeader Asterisk SIPGetHeader
|
706
|
+
def sip_get_header(header)
|
707
|
+
get_variable("SIP_HEADER(#{header})")
|
708
|
+
end
|
709
|
+
alias :sip_header :sip_get_header
|
710
|
+
|
683
711
|
# Allows you to either set or get a channel variable from Asterisk.
|
684
712
|
# The method takes a hash key/value pair if you would like to set a variable
|
685
713
|
# Or a single string with the variable to get from Asterisk
|
@@ -1048,7 +1076,7 @@ module Adhearsion
|
|
1048
1076
|
end
|
1049
1077
|
|
1050
1078
|
def validate_digits(digits)
|
1051
|
-
|
1079
|
+
digits.to_s.tap do |digits_as_string|
|
1052
1080
|
raise ArgumentError, "Can only be called with valid digits!" unless digits_as_string =~ /^[0-9*#-]+$/
|
1053
1081
|
end
|
1054
1082
|
end
|
@@ -1226,7 +1254,7 @@ module Adhearsion
|
|
1226
1254
|
# @raise QueueDoesNotExistError
|
1227
1255
|
def normalize_queue_status_variable(variable)
|
1228
1256
|
variable = "UNKNOWN" if variable.nil?
|
1229
|
-
|
1257
|
+
variable.downcase.to_sym.tap do |queue_status|
|
1230
1258
|
raise QueueDoesNotExistError.new(name) if queue_status == :unknown
|
1231
1259
|
end
|
1232
1260
|
end
|
@@ -32,7 +32,7 @@ module Adhearsion
|
|
32
32
|
raise ArgumentError, "Name cannot be 'general'!" if name.to_s.downcase == 'general'
|
33
33
|
raise ArgumentError, "A name can only be characters, numbers, and underscores!" if name.to_s !~ /^[\w_]+$/
|
34
34
|
|
35
|
-
|
35
|
+
ContextDefinition.new(name).tap do |context_definition|
|
36
36
|
yield context_definition
|
37
37
|
context_definitions << context_definition
|
38
38
|
end
|
@@ -96,7 +96,7 @@ module Adhearsion
|
|
96
96
|
private
|
97
97
|
|
98
98
|
def mailbox_entry(options)
|
99
|
-
|
99
|
+
MailboxDefinition.new.tap do |mailbox|
|
100
100
|
yield mailbox if block_given?
|
101
101
|
mailboxes << definition
|
102
102
|
end
|
@@ -38,7 +38,7 @@ module Adhearsion
|
|
38
38
|
class << self
|
39
39
|
|
40
40
|
def connect(*args)
|
41
|
-
|
41
|
+
new(*args).tap do |connection|
|
42
42
|
connection.connect!
|
43
43
|
end
|
44
44
|
end
|
@@ -109,7 +109,6 @@ module Adhearsion
|
|
109
109
|
#
|
110
110
|
def initialize(options={})
|
111
111
|
options = parse_options options
|
112
|
-
|
113
112
|
@host = options[:host]
|
114
113
|
@username = options[:username]
|
115
114
|
@password = options[:password]
|
@@ -308,7 +307,7 @@ module Adhearsion
|
|
308
307
|
# @return [ManagerInterfaceResponse, ImmediateResponse] Contains the response from Asterisk and all headers
|
309
308
|
#
|
310
309
|
def send_action_synchronously(*args)
|
311
|
-
|
310
|
+
send_action_asynchronously(*args).response.tap do |response|
|
312
311
|
raise response if response.kind_of?(ManagerInterfaceError)
|
313
312
|
end
|
314
313
|
end
|
@@ -325,7 +324,7 @@ module Adhearsion
|
|
325
324
|
# ping sends an action to the Asterisk Manager Interface that returns a pong
|
326
325
|
# more details here: http://www.voip-info.org/wiki/index.php?page=Asterisk+Manager+API+Action+Ping
|
327
326
|
def ping
|
328
|
-
deprecation_warning
|
327
|
+
#deprecation_warning
|
329
328
|
send_action "Ping"
|
330
329
|
true
|
331
330
|
end
|
@@ -361,10 +360,13 @@ module Adhearsion
|
|
361
360
|
# :exten => 's',
|
362
361
|
# :priority => '1' }
|
363
362
|
def originate(options={})
|
364
|
-
deprecation_warning
|
363
|
+
#deprecation_warning
|
365
364
|
options = options.clone
|
366
365
|
options[:callerid] = options.delete :caller_id if options.has_key? :caller_id
|
367
366
|
options[:exten] = options.delete :extension if options.has_key? :extension
|
367
|
+
if options[:variables] && options[:variables].kind_of?(Hash)
|
368
|
+
options[:variable] = options[:variables].map {|pair| pair.join('=')}.join(@coreSettings["ArgumentDelimiter"])
|
369
|
+
end
|
368
370
|
send_action "Originate", options
|
369
371
|
end
|
370
372
|
|
@@ -380,7 +382,7 @@ module Adhearsion
|
|
380
382
|
# TODO: Provide an example when this works.
|
381
383
|
#
|
382
384
|
def introduce(caller, callee, opts={})
|
383
|
-
deprecation_warning
|
385
|
+
#deprecation_warning
|
384
386
|
dial_args = callee
|
385
387
|
dial_args += "|#{opts[:options]}" if opts[:options]
|
386
388
|
call_and_exec caller, "Dial", :args => dial_args, :caller_id => opts[:caller_id]
|
@@ -389,33 +391,32 @@ module Adhearsion
|
|
389
391
|
# hangup terminates a call accepts a channel as the argument
|
390
392
|
# full details here: http://www.voip-info.org/wiki/index.php?page=Asterisk+Manager+API+Action+Hangup
|
391
393
|
def hangup(channel)
|
392
|
-
deprecation_warning
|
394
|
+
#deprecation_warning
|
393
395
|
send_action "Hangup", :channel => channel
|
394
396
|
end
|
395
397
|
|
396
398
|
# call_and_exec allows you to make a call to a channel and then execute an Astersik application
|
397
399
|
# on that call
|
398
400
|
def call_and_exec(channel, app, opts={})
|
399
|
-
deprecation_warning
|
401
|
+
#deprecation_warning
|
400
402
|
args = { :channel => channel, :application => app }
|
401
403
|
args[:caller_id] = opts[:caller_id] if opts[:caller_id]
|
402
404
|
args[:data] = opts[:args] if opts[:args]
|
405
|
+
args[:variables] = opts[:variables] if opts[:variables]
|
403
406
|
originate args
|
404
407
|
end
|
405
408
|
|
406
409
|
# call_into_context is syntactic sugar for the Asterisk originate command that allows you to
|
407
|
-
#
|
410
|
+
# launch a call into a particular context. For example:
|
408
411
|
#
|
409
412
|
# call_into_context('SIP/1000@sipnetworks.com', 'my_context', { :variables => { :session_guid => new_guid }})
|
410
413
|
def call_into_context(channel, context, options={})
|
411
|
-
deprecation_warning
|
414
|
+
#deprecation_warning
|
412
415
|
args = {:channel => channel, :context => context}
|
413
416
|
args[:priority] = options[:priority] || 1
|
414
417
|
args[:exten] = options[:extension] if options[:extension]
|
415
418
|
args[:caller_id] = options[:caller_id] if options[:caller_id]
|
416
|
-
|
417
|
-
args[:variable] = options[:variables].map {|pair| pair.join('=')}.join(@coreSettings["ArgumentDelimiter"])
|
418
|
-
end
|
419
|
+
args[:variables] = options[:variables] if options[:variables]
|
419
420
|
originate args
|
420
421
|
end
|
421
422
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
# line 1 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
2
3
|
require File.join(File.dirname(__FILE__), 'ami_messages.rb')
|
3
4
|
|
@@ -7,9 +8,30 @@ module Adhearsion
|
|
7
8
|
module Manager
|
8
9
|
class AbstractAsteriskManagerInterfaceStreamLexer
|
9
10
|
|
10
|
-
BUFFER_SIZE =
|
11
|
+
BUFFER_SIZE = 128.kilobytes unless defined? BUFFER_SIZE
|
11
12
|
|
12
|
-
|
13
|
+
##
|
14
|
+
# IMPORTANT! See method documentation for adjust_pointers!
|
15
|
+
#
|
16
|
+
# @see adjust_pointers
|
17
|
+
#
|
18
|
+
POINTERS = [
|
19
|
+
:@current_pointer,
|
20
|
+
:@token_start,
|
21
|
+
:@token_end,
|
22
|
+
:@version_start,
|
23
|
+
:@event_name_start,
|
24
|
+
:@current_key_position,
|
25
|
+
:@current_value_position,
|
26
|
+
:@last_seen_value_end,
|
27
|
+
:@error_reason_start,
|
28
|
+
:@follows_text_start,
|
29
|
+
:@current_syntax_error_start,
|
30
|
+
:@immediate_response_start
|
31
|
+
]
|
32
|
+
|
33
|
+
|
34
|
+
# line 72 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
13
35
|
##
|
14
36
|
|
15
37
|
attr_accessor(:ami_version)
|
@@ -20,7 +42,7 @@ module Adhearsion
|
|
20
42
|
@ragel_stack = []
|
21
43
|
|
22
44
|
|
23
|
-
# line
|
45
|
+
# line 46 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
24
46
|
class << self
|
25
47
|
attr_accessor :_ami_protocol_parser_actions
|
26
48
|
private :_ami_protocol_parser_actions, :_ami_protocol_parser_actions=
|
@@ -837,7 +859,7 @@ end
|
|
837
859
|
self.ami_protocol_parser_en_response_follows = 268;
|
838
860
|
|
839
861
|
|
840
|
-
# line
|
862
|
+
# line 863 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
841
863
|
begin
|
842
864
|
@current_pointer ||= 0
|
843
865
|
@data_ending_pointer ||= @data.length
|
@@ -847,7 +869,8 @@ begin
|
|
847
869
|
@token_end = nil
|
848
870
|
@ragel_act = 0
|
849
871
|
end
|
850
|
-
|
872
|
+
|
873
|
+
# line 98 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
851
874
|
##
|
852
875
|
|
853
876
|
end
|
@@ -859,7 +882,7 @@ end
|
|
859
882
|
|
860
883
|
def resume!
|
861
884
|
|
862
|
-
# line
|
885
|
+
# line 886 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
863
886
|
begin
|
864
887
|
_klen, _trans, _keys, _acts, _nacts = nil
|
865
888
|
_goto_level = 0
|
@@ -889,12 +912,11 @@ begin
|
|
889
912
|
_acts += 1
|
890
913
|
case _ami_protocol_parser_actions[_acts - 1]
|
891
914
|
when 30 then
|
892
|
-
# line 1 "
|
915
|
+
# line 1 "NONE"
|
893
916
|
begin
|
894
917
|
@token_start = @current_pointer
|
895
918
|
end
|
896
|
-
# line
|
897
|
-
# line 898 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
919
|
+
# line 920 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
898
920
|
end # from state action switch
|
899
921
|
end
|
900
922
|
if _trigger_goto
|
@@ -962,112 +984,91 @@ begin
|
|
962
984
|
_acts += 1
|
963
985
|
case _ami_protocol_parser_actions[_acts - 1]
|
964
986
|
when 0 then
|
965
|
-
# line
|
987
|
+
# line 37 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
966
988
|
begin
|
967
989
|
init_success end
|
968
|
-
# line 17 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
969
990
|
when 1 then
|
970
|
-
# line
|
991
|
+
# line 39 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
971
992
|
begin
|
972
993
|
init_response_follows end
|
973
|
-
# line 19 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
974
994
|
when 2 then
|
975
|
-
# line
|
995
|
+
# line 41 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
976
996
|
begin
|
977
997
|
init_error end
|
978
|
-
# line 21 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
979
998
|
when 3 then
|
980
|
-
# line
|
999
|
+
# line 43 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
981
1000
|
begin
|
982
1001
|
message_received @current_message end
|
983
|
-
# line 23 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
984
1002
|
when 4 then
|
985
|
-
# line
|
1003
|
+
# line 44 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
986
1004
|
begin
|
987
1005
|
error_received @current_message end
|
988
|
-
# line 24 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
989
1006
|
when 5 then
|
990
|
-
# line
|
1007
|
+
# line 46 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
991
1008
|
begin
|
992
1009
|
version_starts end
|
993
|
-
# line 26 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
994
1010
|
when 6 then
|
995
|
-
# line
|
1011
|
+
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
996
1012
|
begin
|
997
1013
|
version_stops end
|
998
|
-
# line 27 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
999
1014
|
when 7 then
|
1000
|
-
# line
|
1015
|
+
# line 49 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1001
1016
|
begin
|
1002
1017
|
key_starts end
|
1003
|
-
# line 29 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1004
1018
|
when 8 then
|
1005
|
-
# line
|
1019
|
+
# line 50 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1006
1020
|
begin
|
1007
1021
|
key_stops end
|
1008
|
-
# line 30 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1009
1022
|
when 9 then
|
1010
|
-
# line
|
1023
|
+
# line 52 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1011
1024
|
begin
|
1012
1025
|
value_starts end
|
1013
|
-
# line 32 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1014
1026
|
when 10 then
|
1015
|
-
# line
|
1027
|
+
# line 53 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1016
1028
|
begin
|
1017
1029
|
value_stops end
|
1018
|
-
# line 33 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1019
1030
|
when 11 then
|
1020
|
-
# line
|
1031
|
+
# line 55 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1021
1032
|
begin
|
1022
1033
|
error_reason_starts end
|
1023
|
-
# line 35 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1024
1034
|
when 12 then
|
1025
|
-
# line
|
1035
|
+
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1026
1036
|
begin
|
1027
1037
|
error_reason_stops end
|
1028
|
-
# line 36 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1029
1038
|
when 13 then
|
1030
|
-
# line
|
1039
|
+
# line 58 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1031
1040
|
begin
|
1032
1041
|
syntax_error_starts end
|
1033
|
-
# line 38 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1034
1042
|
when 14 then
|
1035
|
-
# line
|
1043
|
+
# line 59 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1036
1044
|
begin
|
1037
1045
|
syntax_error_stops end
|
1038
|
-
# line 39 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1039
1046
|
when 15 then
|
1040
|
-
# line
|
1047
|
+
# line 61 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1041
1048
|
begin
|
1042
1049
|
immediate_response_starts end
|
1043
|
-
# line 41 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1044
1050
|
when 16 then
|
1045
|
-
# line
|
1051
|
+
# line 62 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1046
1052
|
begin
|
1047
1053
|
immediate_response_stops end
|
1048
|
-
# line 42 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1049
1054
|
when 17 then
|
1050
|
-
# line
|
1055
|
+
# line 64 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1051
1056
|
begin
|
1052
1057
|
follows_text_starts end
|
1053
|
-
# line 44 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1054
1058
|
when 18 then
|
1055
|
-
# line
|
1059
|
+
# line 65 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1056
1060
|
begin
|
1057
1061
|
follows_text_stops end
|
1058
|
-
# line 45 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1059
1062
|
when 19 then
|
1060
|
-
# line
|
1063
|
+
# line 67 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1061
1064
|
begin
|
1062
1065
|
event_name_starts end
|
1063
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1064
1066
|
when 20 then
|
1065
|
-
# line
|
1067
|
+
# line 68 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1066
1068
|
begin
|
1067
1069
|
event_name_stops end
|
1068
|
-
# line 48 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1069
1070
|
when 21 then
|
1070
|
-
# line 34 "lib/adhearsion/voip/asterisk/manager_interface/
|
1071
|
+
# line 34 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1071
1072
|
begin
|
1072
1073
|
begin
|
1073
1074
|
@current_state = 152
|
@@ -1076,9 +1077,8 @@ when 21 then
|
|
1076
1077
|
break
|
1077
1078
|
end
|
1078
1079
|
end
|
1079
|
-
# line 34 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1080
1080
|
when 22 then
|
1081
|
-
# line 35 "lib/adhearsion/voip/asterisk/manager_interface/
|
1081
|
+
# line 35 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1082
1082
|
begin
|
1083
1083
|
begin
|
1084
1084
|
@current_state = 152
|
@@ -1087,9 +1087,8 @@ when 22 then
|
|
1087
1087
|
break
|
1088
1088
|
end
|
1089
1089
|
end
|
1090
|
-
# line 35 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1091
1090
|
when 23 then
|
1092
|
-
# line 36 "lib/adhearsion/voip/asterisk/manager_interface/
|
1091
|
+
# line 36 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1093
1092
|
begin
|
1094
1093
|
begin
|
1095
1094
|
@current_state = 152
|
@@ -1098,9 +1097,8 @@ when 23 then
|
|
1098
1097
|
break
|
1099
1098
|
end
|
1100
1099
|
end
|
1101
|
-
# line 36 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1102
1100
|
when 24 then
|
1103
|
-
# line 38 "lib/adhearsion/voip/asterisk/manager_interface/
|
1101
|
+
# line 38 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1104
1102
|
begin
|
1105
1103
|
begin
|
1106
1104
|
@current_state = 268
|
@@ -1109,9 +1107,8 @@ when 24 then
|
|
1109
1107
|
break
|
1110
1108
|
end
|
1111
1109
|
end
|
1112
|
-
# line 38 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1113
1110
|
when 25 then
|
1114
|
-
# line 43 "lib/adhearsion/voip/asterisk/manager_interface/
|
1111
|
+
# line 43 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1115
1112
|
begin
|
1116
1113
|
begin
|
1117
1114
|
@ragel_stack_top -= 1
|
@@ -1121,9 +1118,8 @@ when 25 then
|
|
1121
1118
|
break
|
1122
1119
|
end
|
1123
1120
|
end
|
1124
|
-
# line 43 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1125
1121
|
when 26 then
|
1126
|
-
# line 78 "lib/adhearsion/voip/asterisk/manager_interface/
|
1122
|
+
# line 78 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1127
1123
|
begin
|
1128
1124
|
begin
|
1129
1125
|
@current_state = 262
|
@@ -1132,9 +1128,8 @@ when 26 then
|
|
1132
1128
|
break
|
1133
1129
|
end
|
1134
1130
|
end
|
1135
|
-
# line 78 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1136
1131
|
when 27 then
|
1137
|
-
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/
|
1132
|
+
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1138
1133
|
begin
|
1139
1134
|
message_received @current_message; begin
|
1140
1135
|
@current_state = 262
|
@@ -1143,26 +1138,22 @@ when 27 then
|
|
1143
1138
|
break
|
1144
1139
|
end
|
1145
1140
|
end
|
1146
|
-
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1147
1141
|
when 31 then
|
1148
|
-
# line 1 "
|
1142
|
+
# line 1 "NONE"
|
1149
1143
|
begin
|
1150
1144
|
@token_end = @current_pointer+1
|
1151
1145
|
end
|
1152
|
-
# line 1 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1153
1146
|
when 32 then
|
1154
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/
|
1147
|
+
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1155
1148
|
begin
|
1156
1149
|
@ragel_act = 1; end
|
1157
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1158
1150
|
when 33 then
|
1159
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/
|
1151
|
+
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1160
1152
|
begin
|
1161
1153
|
@token_end = @current_pointer+1
|
1162
1154
|
end
|
1163
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1164
1155
|
when 34 then
|
1165
|
-
# line 48 "lib/adhearsion/voip/asterisk/manager_interface/
|
1156
|
+
# line 48 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1166
1157
|
begin
|
1167
1158
|
@token_end = @current_pointer+1
|
1168
1159
|
begin begin
|
@@ -1174,15 +1165,13 @@ when 34 then
|
|
1174
1165
|
end
|
1175
1166
|
end
|
1176
1167
|
end
|
1177
|
-
# line 48 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1178
1168
|
when 35 then
|
1179
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/
|
1169
|
+
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1180
1170
|
begin
|
1181
1171
|
@token_end = @current_pointer
|
1182
1172
|
@current_pointer = @current_pointer - 1; end
|
1183
|
-
# line 47 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1184
1173
|
when 36 then
|
1185
|
-
# line 1 "
|
1174
|
+
# line 1 "NONE"
|
1186
1175
|
begin
|
1187
1176
|
case @ragel_act
|
1188
1177
|
when 0 then
|
@@ -1198,9 +1187,8 @@ end
|
|
1198
1187
|
end
|
1199
1188
|
end
|
1200
1189
|
end
|
1201
|
-
# line 1 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1202
1190
|
when 37 then
|
1203
|
-
# line 55 "lib/adhearsion/voip/asterisk/manager_interface/
|
1191
|
+
# line 55 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1204
1192
|
begin
|
1205
1193
|
@token_end = @current_pointer+1
|
1206
1194
|
begin begin
|
@@ -1211,9 +1199,8 @@ when 37 then
|
|
1211
1199
|
end
|
1212
1200
|
end
|
1213
1201
|
end
|
1214
|
-
# line 55 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1215
1202
|
when 38 then
|
1216
|
-
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/
|
1203
|
+
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1217
1204
|
begin
|
1218
1205
|
@token_end = @current_pointer+1
|
1219
1206
|
begin
|
@@ -1228,9 +1215,8 @@ when 38 then
|
|
1228
1215
|
|
1229
1216
|
end
|
1230
1217
|
end
|
1231
|
-
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1232
1218
|
when 39 then
|
1233
|
-
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/
|
1219
|
+
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1234
1220
|
begin
|
1235
1221
|
@token_end = @current_pointer
|
1236
1222
|
@current_pointer = @current_pointer - 1; begin
|
@@ -1245,9 +1231,8 @@ when 39 then
|
|
1245
1231
|
|
1246
1232
|
end
|
1247
1233
|
end
|
1248
|
-
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1249
1234
|
when 40 then
|
1250
|
-
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/
|
1235
|
+
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1251
1236
|
begin
|
1252
1237
|
begin @current_pointer = (( @token_end))-1; end
|
1253
1238
|
begin
|
@@ -1262,45 +1247,38 @@ when 40 then
|
|
1262
1247
|
|
1263
1248
|
end
|
1264
1249
|
end
|
1265
|
-
# line 56 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1266
1250
|
when 41 then
|
1267
|
-
# line 64 "lib/adhearsion/voip/asterisk/manager_interface/
|
1251
|
+
# line 64 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1268
1252
|
begin
|
1269
1253
|
@token_end = @current_pointer+1
|
1270
1254
|
end
|
1271
|
-
# line 64 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1272
1255
|
when 42 then
|
1273
|
-
# line 65 "lib/adhearsion/voip/asterisk/manager_interface/
|
1256
|
+
# line 65 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1274
1257
|
begin
|
1275
1258
|
@token_end = @current_pointer+1
|
1276
1259
|
end
|
1277
|
-
# line 65 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1278
1260
|
when 43 then
|
1279
|
-
# line 66 "lib/adhearsion/voip/asterisk/manager_interface/
|
1261
|
+
# line 66 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1280
1262
|
begin
|
1281
1263
|
@token_end = @current_pointer+1
|
1282
1264
|
end
|
1283
|
-
# line 66 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1284
1265
|
when 44 then
|
1285
|
-
# line 67 "lib/adhearsion/voip/asterisk/manager_interface/
|
1266
|
+
# line 67 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1286
1267
|
begin
|
1287
1268
|
@token_end = @current_pointer+1
|
1288
1269
|
end
|
1289
|
-
# line 67 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1290
1270
|
when 45 then
|
1291
|
-
# line 68 "lib/adhearsion/voip/asterisk/manager_interface/
|
1271
|
+
# line 68 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1292
1272
|
begin
|
1293
1273
|
@token_end = @current_pointer+1
|
1294
1274
|
end
|
1295
|
-
# line 68 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1296
1275
|
when 46 then
|
1297
|
-
# line 69 "lib/adhearsion/voip/asterisk/manager_interface/
|
1276
|
+
# line 69 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1298
1277
|
begin
|
1299
1278
|
@token_end = @current_pointer+1
|
1300
1279
|
end
|
1301
|
-
# line 69 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1302
1280
|
when 47 then
|
1303
|
-
# line 70 "lib/adhearsion/voip/asterisk/manager_interface/
|
1281
|
+
# line 70 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1304
1282
|
begin
|
1305
1283
|
@token_end = @current_pointer+1
|
1306
1284
|
begin begin
|
@@ -1311,9 +1289,8 @@ when 47 then
|
|
1311
1289
|
end
|
1312
1290
|
end
|
1313
1291
|
end
|
1314
|
-
# line 70 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1315
1292
|
when 48 then
|
1316
|
-
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/
|
1293
|
+
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1317
1294
|
begin
|
1318
1295
|
@token_end = @current_pointer+1
|
1319
1296
|
begin
|
@@ -1330,9 +1307,8 @@ when 48 then
|
|
1330
1307
|
|
1331
1308
|
end
|
1332
1309
|
end
|
1333
|
-
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1334
1310
|
when 49 then
|
1335
|
-
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/
|
1311
|
+
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1336
1312
|
begin
|
1337
1313
|
@token_end = @current_pointer
|
1338
1314
|
@current_pointer = @current_pointer - 1; begin
|
@@ -1349,9 +1325,8 @@ when 49 then
|
|
1349
1325
|
|
1350
1326
|
end
|
1351
1327
|
end
|
1352
|
-
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1353
1328
|
when 50 then
|
1354
|
-
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/
|
1329
|
+
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1355
1330
|
begin
|
1356
1331
|
begin @current_pointer = (( @token_end))-1; end
|
1357
1332
|
begin
|
@@ -1368,43 +1343,36 @@ when 50 then
|
|
1368
1343
|
|
1369
1344
|
end
|
1370
1345
|
end
|
1371
|
-
# line 71 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1372
1346
|
when 51 then
|
1373
|
-
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/
|
1347
|
+
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1374
1348
|
begin
|
1375
1349
|
@ragel_act = 13; end
|
1376
|
-
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1377
1350
|
when 52 then
|
1378
|
-
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/
|
1351
|
+
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1379
1352
|
begin
|
1380
1353
|
@ragel_act = 15; end
|
1381
|
-
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1382
1354
|
when 53 then
|
1383
|
-
# line 83 "lib/adhearsion/voip/asterisk/manager_interface/
|
1355
|
+
# line 83 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1384
1356
|
begin
|
1385
1357
|
@token_end = @current_pointer+1
|
1386
1358
|
end
|
1387
|
-
# line 83 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1388
1359
|
when 54 then
|
1389
|
-
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/
|
1360
|
+
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1390
1361
|
begin
|
1391
1362
|
@token_end = @current_pointer
|
1392
1363
|
@current_pointer = @current_pointer - 1; end
|
1393
|
-
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1394
1364
|
when 55 then
|
1395
|
-
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/
|
1365
|
+
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1396
1366
|
begin
|
1397
1367
|
@token_end = @current_pointer
|
1398
1368
|
@current_pointer = @current_pointer - 1; end
|
1399
|
-
# line 84 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1400
1369
|
when 56 then
|
1401
|
-
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/
|
1370
|
+
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/ami_protocol_lexer_machine.rl"
|
1402
1371
|
begin
|
1403
1372
|
begin @current_pointer = (( @token_end))-1; end
|
1404
1373
|
end
|
1405
|
-
# line 82 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1406
1374
|
when 57 then
|
1407
|
-
# line 1 "
|
1375
|
+
# line 1 "NONE"
|
1408
1376
|
begin
|
1409
1377
|
case @ragel_act
|
1410
1378
|
when 0 then
|
@@ -1420,8 +1388,7 @@ end
|
|
1420
1388
|
end
|
1421
1389
|
end
|
1422
1390
|
end
|
1423
|
-
# line
|
1424
|
-
# line 1425 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
1391
|
+
# line 1392 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
1425
1392
|
end # action switch
|
1426
1393
|
end
|
1427
1394
|
end
|
@@ -1438,17 +1405,15 @@ end
|
|
1438
1405
|
_acts += 1
|
1439
1406
|
case _ami_protocol_parser_actions[_acts - 1]
|
1440
1407
|
when 28 then
|
1441
|
-
# line 1 "
|
1408
|
+
# line 1 "NONE"
|
1442
1409
|
begin
|
1443
1410
|
@token_start = nil; end
|
1444
|
-
# line 1 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1445
1411
|
when 29 then
|
1446
|
-
# line 1 "
|
1412
|
+
# line 1 "NONE"
|
1447
1413
|
begin
|
1448
1414
|
@ragel_act = 0
|
1449
1415
|
end
|
1450
|
-
# line
|
1451
|
-
# line 1452 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
1416
|
+
# line 1417 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rb"
|
1452
1417
|
end # to state action switch
|
1453
1418
|
end
|
1454
1419
|
if _trigger_goto
|
@@ -1478,15 +1443,29 @@ end
|
|
1478
1443
|
end
|
1479
1444
|
end
|
1480
1445
|
end
|
1481
|
-
|
1446
|
+
|
1447
|
+
# line 108 "lib/adhearsion/voip/asterisk/manager_interface/ami_lexer.rl.rb"
|
1482
1448
|
##
|
1483
1449
|
end
|
1484
1450
|
|
1485
1451
|
def extend_buffer_with(new_data)
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
|
1452
|
+
length = new_data.size
|
1453
|
+
|
1454
|
+
if length > BUFFER_SIZE
|
1455
|
+
raise Exception, "ERROR: Buffer overrun! Input size (#{new_data.size}) larger than buffer (#{BUFFER_SIZE})"
|
1456
|
+
end
|
1457
|
+
|
1458
|
+
if length + @data.size > BUFFER_SIZE
|
1459
|
+
if @data.size != @current_pointer
|
1460
|
+
if @current_pointer < length
|
1461
|
+
# We are about to shift more bytes off the array than we have
|
1462
|
+
# parsed. This will cause the parser to lose state so
|
1463
|
+
# integrity cannot be guaranteed.
|
1464
|
+
raise Exception, "ERROR: Buffer overrun! AMI parser cannot guarantee sanity. New data size: #{new_data.size}; Current pointer at #{@current_pointer}; Data size: #{@data.size}"
|
1465
|
+
end
|
1466
|
+
end
|
1467
|
+
@data.slice! 0...length
|
1468
|
+
adjust_pointers -length
|
1490
1469
|
end
|
1491
1470
|
@data << new_data
|
1492
1471
|
@data_ending_pointer = @data.size
|
@@ -1494,6 +1473,27 @@ end
|
|
1494
1473
|
|
1495
1474
|
protected
|
1496
1475
|
|
1476
|
+
##
|
1477
|
+
# This method will adjust all pointers into the buffer according
|
1478
|
+
# to the supplied offset. This is necessary any time the buffer
|
1479
|
+
# changes, for example when the sliding window is incremented forward
|
1480
|
+
# after new data is received.
|
1481
|
+
#
|
1482
|
+
# It is VERY IMPORTANT that when any additional pointers are defined
|
1483
|
+
# that they are added to this method. Unpredictable results may
|
1484
|
+
# otherwise occur!
|
1485
|
+
#
|
1486
|
+
# @see https://adhearsion.lighthouseapp.com/projects/5871-adhearsion/tickets/72-ami-lexer-buffer-offset#ticket-72-26
|
1487
|
+
#
|
1488
|
+
# @param offset Adjust pointers by offset. May be negative.
|
1489
|
+
#
|
1490
|
+
def adjust_pointers(offset)
|
1491
|
+
POINTERS.each do |ptr|
|
1492
|
+
value = instance_variable_get(ptr)
|
1493
|
+
instance_variable_set(ptr, value + offset) if !value.nil?
|
1494
|
+
end
|
1495
|
+
end
|
1496
|
+
|
1497
1497
|
##
|
1498
1498
|
# Called after a response or event has been successfully parsed.
|
1499
1499
|
#
|
@@ -1533,16 +1533,16 @@ end
|
|
1533
1533
|
end
|
1534
1534
|
|
1535
1535
|
def init_error
|
1536
|
-
@current_message = ManagerInterfaceError.new
|
1536
|
+
@current_message = ManagerInterfaceError.new()
|
1537
1537
|
end
|
1538
1538
|
|
1539
1539
|
def version_starts
|
1540
|
-
@
|
1540
|
+
@version_start = @current_pointer
|
1541
1541
|
end
|
1542
1542
|
|
1543
1543
|
def version_stops
|
1544
|
-
self.ami_version = @data[@
|
1545
|
-
@
|
1544
|
+
self.ami_version = @data[@version_start...@current_pointer].to_f
|
1545
|
+
@version_start = nil
|
1546
1546
|
end
|
1547
1547
|
|
1548
1548
|
def event_name_starts
|