adhearsion 0.8.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|