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.



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

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

Instance Method Details

#closeObject



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

def close
  @socket.close
end

#recv(bytesize = MAXPDUSIZE) ⇒ Object



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

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

#send(payload) ⇒ Object



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

def send(payload)
  write(payload)
  recv
end

#write(payload) ⇒ Object



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

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