Class: NETSNMP::Session::Transport

Inherits:
Object
  • Object
show all
Defined in:
lib/netsnmp/session.rb

Constant Summary collapse

MAXPDUSIZE =
0xffff + 1

Instance Method Summary collapse

Constructor Details

#initialize(host, port, timeout:) ⇒ Transport

Returns a new instance of Transport.



76
77
78
79
80
# File 'lib/netsnmp/session.rb', line 76

def initialize(host, port, timeout:)
  @socket = UDPSocket.new
  @destaddr = Socket.sockaddr_in(port, host)
  @timeout = timeout
end

Instance Method Details

#closeObject



82
83
84
# File 'lib/netsnmp/session.rb', line 82

def close
  @socket.close
end

#recv(bytesize = MAXPDUSIZE) ⇒ Object



97
98
99
100
101
102
# File 'lib/netsnmp/session.rb', line 97

def recv(bytesize = MAXPDUSIZE)
  perform_io do
    datagram, = @socket.recvmsg_nonblock(bytesize, Socket::MSG_DONTWAIT)
    datagram
  end
end

#send(payload) ⇒ Object



86
87
88
89
# File 'lib/netsnmp/session.rb', line 86

def send(payload)
  write(payload)
  recv
end

#write(payload) ⇒ Object



91
92
93
94
95
# File 'lib/netsnmp/session.rb', line 91

def write(payload)
  perform_io do
    @socket.sendmsg(payload, Socket::MSG_DONTWAIT, @destaddr)
  end
end