Class: SNMP::ObjectId

Inherits:
Array
  • Object
show all
Includes:
Comparable
Defined in:
lib/snmp/varbind.rb

Direct Known Subclasses

ObjectName

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id = [], mib = nil) ⇒ 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.



165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/snmp/varbind.rb', line 165

def initialize(id=[], mib=nil)
  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
  @mib = mib
rescue ArgumentError
  raise ArgumentError, "#{id.inspect}:#{id.class} not a valid object ID"
end

Class Method Details

.decode(value_data, mib = nil) ⇒ Object



153
154
155
# File 'lib/snmp/varbind.rb', line 153

def self.decode(value_data, mib=nil)
  ObjectId.new(decode_object_id_value(value_data), mib)
end

Instance Method Details

#asn1_typeObject



157
158
159
# File 'lib/snmp/varbind.rb', line 157

def asn1_type
  "OBJECT IDENTIFIER"
end

#encodeObject



210
211
212
# File 'lib/snmp/varbind.rb', line 210

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”.



237
238
239
240
241
242
243
244
245
246
# File 'lib/snmp/varbind.rb', line 237

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

#inspectObject



206
207
208
# File 'lib/snmp/varbind.rb', line 206

def inspect
  "[#{to_str}]"
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”.

Returns:

  • (Boolean)


218
219
220
221
222
223
224
225
226
227
228
# File 'lib/snmp/varbind.rb', line 218

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_oidObject



190
191
192
# File 'lib/snmp/varbind.rb', line 190

def to_oid
  self
end

#to_sObject



194
195
196
197
198
199
200
# File 'lib/snmp/varbind.rb', line 194

def to_s
  if @mib
    @mib.name(self)
  else
    to_str
  end
end

#to_strObject



202
203
204
# File 'lib/snmp/varbind.rb', line 202

def to_str
  self.join('.')
end

#to_varbindObject



186
187
188
# File 'lib/snmp/varbind.rb', line 186

def to_varbind
  VarBind.new(self, Null)
end

#with_mib(mib) ⇒ Object

Adds MIB information to this object_id for use with to_s.



181
182
183
184
# File 'lib/snmp/varbind.rb', line 181

def with_mib(mib)
  @mib = mib
  self
end