Class: Net::SNMP::OID

Inherits:
Object
  • Object
show all
Defined in:
lib/net/snmp/oid.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(oid) ⇒ OID

Returns a new instance of OID.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/net/snmp/oid.rb', line 9

def initialize(oid)
  @oid = oid
  @pointer = FFI::MemoryPointer.new(:ulong, Constants::MAX_OID_LEN)
  @length_pointer = FFI::MemoryPointer.new(:size_t)
  @length_pointer.write_int(Constants::MAX_OID_LEN)
  if @oid =~ /^[\d\.]*$/
    if Wrapper.read_objid(@oid, @pointer, @length_pointer) == 0
      Wrapper.snmp_perror(@oid)
    end
  else
    if Wrapper.get_node(@oid, @pointer, @length_pointer) == 0
      Wrapper.snmp_perror(@oid)
    end
    @oid = to_s
  end

end

Instance Attribute Details

#length_pointerObject (readonly)

Returns the value of attribute length_pointer.



4
5
6
# File 'lib/net/snmp/oid.rb', line 4

def length_pointer
  @length_pointer
end

#oidObject (readonly)

Returns the value of attribute oid.



4
5
6
# File 'lib/net/snmp/oid.rb', line 4

def oid
  @oid
end

#pointerObject (readonly)

Returns the value of attribute pointer.



4
5
6
# File 'lib/net/snmp/oid.rb', line 4

def pointer
  @pointer
end

Instance Method Details

#<=>(o) ⇒ Object



58
59
60
61
62
# File 'lib/net/snmp/oid.rb', line 58

def <=>(o)
  a = self._packed
  b = o._packed
  a <=> b
end

#_packedObject



64
65
66
67
68
69
# File 'lib/net/snmp/oid.rb', line 64

def _packed
  i = self.to_s.dip
  i.sub!(/^\./,'')
  i.gsub!(/ /, '.0')
  i.replace(i.split('.').map(&:to_i).pack('N*'))
end

#from_pointer(ptr, len) ⇒ Object



6
7
8
# File 'lib/net/snmp/oid.rb', line 6

def from_pointer(ptr, len)
  
end

#indexObject



50
51
52
# File 'lib/net/snmp/oid.rb', line 50

def index
  oid.sub(node.oid.name + ".","")
end

#labelObject



54
55
56
# File 'lib/net/snmp/oid.rb', line 54

def label
  node.label + "." + index
end

#lengthObject



31
32
33
# File 'lib/net/snmp/oid.rb', line 31

def length
  @length_pointer.read_int
end

#nameObject



38
39
40
# File 'lib/net/snmp/oid.rb', line 38

def name
  @oid
end

#nodeObject



46
47
48
# File 'lib/net/snmp/oid.rb', line 46

def node
  MIB::Node.get_node(oid)
end

#parent_of?(o) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/net/snmp/oid.rb', line 71

def parent_of?(o)
  o.to_s =~ /^#{self.to_s}\./
end

#sizeObject



27
28
29
# File 'lib/net/snmp/oid.rb', line 27

def size
  @length_pointer.read_int * 8 # XXX 8 = sizeof(oid) on my system.  Not sure if it's different on others
end

#to_sObject



42
43
44
# File 'lib/net/snmp/oid.rb', line 42

def to_s
  @pointer.read_array_of_long(length_pointer.read_int).join(".")
end