Skip to content

Commit

Permalink
refactor walker to reduce the complexity sligthly
Browse files Browse the repository at this point in the history
  • Loading branch information
zenonas committed Oct 27, 2014
1 parent 56db2d2 commit 8bb19ca
Showing 1 changed file with 16 additions and 15 deletions.
31 changes: 16 additions & 15 deletions lib/snmpjr/walker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,41 @@ class Snmpjr
class Walker
def initialize opts = {}
@target = opts.fetch(:target)
@session = Snmpjr::Session.new
@tree_utils = Snmpjr::Wrappers::Util::TreeUtils.new(@session.snmp, pdu_factory)
end

def walk oid
session = Snmpjr::Session.new
session.start

tree_utils = Snmpjr::Wrappers::Util::TreeUtils.new(session.snmp, pdu_factory)
begin
response = tree_utils.getSubtree(@target, oid)
@session.start
response = @tree_utils.getSubtree(@target, oid)
rescue Exception => e
raise RuntimeError.new e.to_s
ensure
session.close
@session.close
end
results = response.flat_map {|response_event|
extract_variable_bindings(response_event)
response.flat_map {|response_event|
check_event_for_errors(response_event)
extract_variable_bindings(response_event.variable_bindings)
}
results
end

private

def extract_variable_bindings event
def extract_variable_bindings variable_bindings
variable_bindings.flat_map {|vb|
Snmpjr::Response.new(value: vb.variable.to_s)
}
end

def check_event_for_errors event
if event.is_error?
if event.error_message == 'Request timed out.'
raise Snmpjr::TargetTimeoutError.new('Request timed out')
else
raise Snmpjr::RuntimeError.new(event.error_message)
raise RuntimeError.new(event.error_message)
end
end

event.variable_bindings.flat_map {|vb|
Snmpjr::Response.new(value: vb.variable.to_s)
}
end

def pdu_factory
Expand Down

0 comments on commit 8bb19ca

Please sign in to comment.