class SNMP4EM::SnmpSetRequest

The result of calling {SNMPCommonRequests#set}.

Attributes

snmp_id[RW]

Public Class Methods

new(sender, oids, args = {}) click to toggle source
Calls superclass method
   # File lib/snmp4em/requests/snmp_set_request.rb
18 def initialize(sender, oids, args = {})  # @private
19   @oids = [*oids].collect { |oid_str, value| { :requested_oid => SNMP::ObjectId.new(oid_str), :requested_string => oid_str, :value => format_outgoing_value(value), :state => :pending, :response => nil }}
20   super
21 end

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_set_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_set_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_set_request.rb
23 def handle_response(response)  # @private
24   super
25   
26   if (response.error_status == :noError)
27     pending_oids.zip(response.varbind_list).each do |oid, response_vb|
28       oid[:response] = true
29       oid[:state] = :complete
30     end
31   
32   else
33     error_oid = pending_oids[response.error_index - 1]
34     error_oid[:state] = :error
35     error_oid[:error] = SNMP::ResponseError.new(response.error_status)
36   end
37   
38   if pending_oids.empty?
39     result = {}
40 
41     @oids.each do |oid|
42       requested_oid = oid[:requested_string]
43       result[requested_oid] = oid[:error] || oid[:response]
44     end
45 
46     succeed result
47     return
48   end
49 
50   send_msg
51 end

Private Instance Methods

send_msg() click to toggle source
Calls superclass method
   # File lib/snmp4em/requests/snmp_set_request.rb
55 def send_msg
56   Manager.track_request(self)
57 
58   pending_varbinds = pending_oids.collect{|oid| SNMP::VarBind.new(oid[:requested_oid], oid[:value])}
59 
60   vb_list = SNMP::VarBindList.new(pending_varbinds)
61   request = SNMP::SetRequest.new(@snmp_id, vb_list)
62   message = SNMP::Message.new(@sender.version, @sender.community_rw, request)
63   
64   super(message)
65 end