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 = []) ⇒ 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_typeObject



144
145
146
# File 'lib/snmp/varbind.rb', line 144

def asn1_type
  "OBJECT IDENTIFIER"
end

#encodeObject



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

#inspectObject



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

Returns:

  • (Boolean)


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_oidObject



168
169
170
# File 'lib/snmp/varbind.rb', line 168

def to_oid
  self
end

#to_sObject



172
173
174
# File 'lib/snmp/varbind.rb', line 172

def to_s
  self.join('.')
end

#to_varbindObject



164
165
166
# File 'lib/snmp/varbind.rb', line 164

def to_varbind
  VarBind.new(self, Null)
end