From 8bb19cad6f791d7f763a3438f8d66c65812235f2 Mon Sep 17 00:00:00 2001 From: Zen Kyprianou Date: Mon, 27 Oct 2014 15:44:49 +0000 Subject: [PATCH] refactor walker to reduce the complexity sligthly --- lib/snmpjr/walker.rb | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/lib/snmpjr/walker.rb b/lib/snmpjr/walker.rb index 88c3ca7..fb339e6 100644 --- a/lib/snmpjr/walker.rb +++ b/lib/snmpjr/walker.rb @@ -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