Class: SNMP::ObjectId
- Inherits:
-
Array
- Object
- Array
- SNMP::ObjectId
- Includes:
- Comparable
- Defined in:
- lib/snmp/varbind.rb
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #asn1_type ⇒ Object
- #encode ⇒ Object
-
#index(parent_tree) ⇒ Object
Returns an index based on the difference between this ObjectId and the provided parent ObjectId.
-
#initialize(id = []) ⇒ ObjectId
constructor
Create an object id.
- #inspect ⇒ Object
-
#subtree_of?(parent_tree) ⇒ Boolean
Returns true if this ObjectId is a subtree of the provided parent tree ObjectId.
- #to_oid ⇒ Object
- #to_s ⇒ Object
- #to_varbind ⇒ Object
Constructor Details
#initialize(id = []) ⇒ ObjectId
Create an object id. The input is expected to be either a string in the format “n.n.n.n.n.n” or an array of integers.
152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/snmp/varbind.rb', line 152 def initialize(id=[]) if id.nil? raise ArgumentError elsif id.respond_to? :to_str super(make_integers(id.to_str.split("."))) else super(make_integers(id.to_ary)) end rescue ArgumentError raise ArgumentError, "#{id.inspect}:#{id.class} not a valid object ID" end |
Class Method Details
.decode(value_data) ⇒ Object
140 141 142 |
# File 'lib/snmp/varbind.rb', line 140 def self.decode(value_data) ObjectId.new(decode_object_id_value(value_data)) end |
Instance Method Details
#asn1_type ⇒ Object
144 145 146 |
# File 'lib/snmp/varbind.rb', line 144 def asn1_type "OBJECT IDENTIFIER" end |
#encode ⇒ Object
180 181 182 |
# File 'lib/snmp/varbind.rb', line 180 def encode encode_object_id(self) end |
#index(parent_tree) ⇒ Object
Returns an index based on the difference between this ObjectId and the provided parent ObjectId.
For example, ObjectId.new(“1.3.6.1.5”).index(“1.3.6.1”) returns an ObjectId of “5”.
207 208 209 210 211 212 213 214 215 216 |
# File 'lib/snmp/varbind.rb', line 207 def index(parent_tree) parent_tree = make_object_id(parent_tree) if not subtree_of?(parent_tree) raise ArgumentError, "#{self.to_s} not a subtree of #{parent_tree.to_s}" elsif self.length == parent_tree.length raise ArgumentError, "OIDs are the same" else ObjectId.new(self[parent_tree.length..-1]) end end |
#inspect ⇒ Object
176 177 178 |
# File 'lib/snmp/varbind.rb', line 176 def inspect "[#{self.to_s}]" end |
#subtree_of?(parent_tree) ⇒ Boolean
Returns true if this ObjectId is a subtree of the provided parent tree ObjectId. For example, “1.3.6.1.5” is a subtree of “1.3.6.1”.
188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/snmp/varbind.rb', line 188 def subtree_of?(parent_tree) parent_tree = make_object_id(parent_tree) if parent_tree.length > self.length false else parent_tree.each_index do |i| return false if parent_tree[i] != self[i] end true end end |
#to_oid ⇒ Object
168 169 170 |
# File 'lib/snmp/varbind.rb', line 168 def to_oid self end |
#to_s ⇒ Object
172 173 174 |
# File 'lib/snmp/varbind.rb', line 172 def to_s self.join('.') end |