class SNMP4EM::SnmpGetBulkRequest
The result of calling {SNMPv2Requests#getbulk}.
Attributes
snmp_id[RW]
Public Instance Methods
callback(&block)
click to toggle source
Used to register a callback that is triggered when the query result is ready. The resulting object is passed as a parameter to the block.
Calls superclass method
# File lib/snmp4em/requests/snmp_getbulk_request.rb 9 def callback &block 10 super 11 end
errback(&block)
click to toggle source
Used to register a callback that is triggered when query fails to complete successfully.
Calls superclass method
# File lib/snmp4em/requests/snmp_getbulk_request.rb 14 def errback &block 15 super 16 end
handle_response(response)
click to toggle source
Calls superclass method
# File lib/snmp4em/requests/snmp_getbulk_request.rb 27 def handle_response(response) # @private 28 super 29 30 pending_repeating_oids = pending_oids.select{|oid| oid[:method] == :repeating} 31 pending_non_repeating_oids = pending_oids.select{|oid| oid[:method] == :non_repeating} 32 33 if response.error_status == :noError 34 # No errors, populate the @responses object so it can be returned 35 36 vb_list = response.vb_list 37 vb_index = 0 38 39 pending_non_repeating_oids.each do |oid| 40 response_vb = vb_list.shift 41 oid[:responses][response_vb.name.to_s] = format_value(response_vb) 42 oid[:state] = :complete 43 end 44 45 while response_vb = vb_list.shift 46 oid = pending_repeating_oids[vb_index % pending_repeating_oids.count] 47 oid[:responses][response_vb.name.to_s] = format_value(response_vb) unless response_vb.value == SNMP::EndOfMibView 48 oid[:state] = :complete 49 vb_index += 1 50 end 51 52 else 53 error_oid = pending_oids[response.error_index - 1] 54 error_oid[:state] = :error 55 error_oid[:error] = SNMP::ResponseError.new(response.error_status) 56 end 57 58 if pending_oids.empty? 59 result = {} 60 61 @oids.each do |oid| 62 requested_oid = oid[:requested_string] 63 result[requested_oid] = oid[:error] || oid[:responses] 64 end 65 66 succeed result 67 return 68 end 69 70 send_msg 71 end
on_init(args)
click to toggle source
# File lib/snmp4em/requests/snmp_getbulk_request.rb 18 def on_init args # @private 19 @oids.each_index do |i| 20 @oids[i][:responses] = {} 21 @oids[i][:method] = (i < (args[:non_repeaters] || 0) ? :non_repeating : :repeating) 22 end 23 24 @max_results ||= 10 25 end
Private Instance Methods
send_msg()
click to toggle source
Calls superclass method
# File lib/snmp4em/requests/snmp_getbulk_request.rb 75 def send_msg 76 Manager.track_request(self) 77 78 vb_list = SNMP::VarBindList.new(pending_oids.collect{|oid| oid[:requested_oid]}) 79 80 max_repetitions = @max_results 81 non_repeaters = pending_oids.select{|oid| oid[:method] == :non_repeating}.count 82 83 # Gracefully handle a new constructor introduced in SNMP 1.3.1 84 if Gem::Version.new(SNMP::VERSION) >= Gem::Version.new("1.3.1") 85 request = SNMP::GetBulkRequest.new(@snmp_id, vb_list, non_repeaters, max_repetitions) 86 else 87 request = SNMP::GetBulkRequest.new(@snmp_id, vb_list) 88 89 request.max_repetitions = max_repetitions 90 request.non_repeaters = non_repeaters 91 end 92 93 message = SNMP::Message.new(@sender.version, @sender.community_ro, request) 94 95 super(message) 96 end