public class SnmpPortal
extends java.lang.Object
SnmpSession
,
SnmpTrapSession
,
DatagramSocket
Modifier and Type | Class and Description |
---|---|
private class |
SnmpPortal.Executor
Defines the inner class, Executor threas, which
will be part of thread pool that is used for
handling the packet
|
private class |
SnmpPortal.Receiver
Defines the inner class that monitors the
datagram socket and receives all the PDU responses.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
bSocketSoTimeoutRequired
Set to true if it is necessary to set the socket timeout value via the Socket.setSoTimeout()
method in order to keep from blocking indefinitely on a socket I/O call.
|
static int |
DATAGRAM_SOCKET_BUFFER_SIZE |
static int |
DEFAULT_RECEIVE_BUFFER_SIZE |
static int |
DEFAULT_SEND_BUFFER_SIZE |
static int |
DEFAULT_THREADPOOL_SIZE |
private java.net.DatagramSocket |
m_comm
The datagram socket used to send and receive
SNMP messages.
|
private AsnEncoder |
m_encoder
ASN.1 encoder used to decode the SNMP messages.
|
private SnmpPacketHandler |
m_handler
The packet handler that is used to process
received SNMP packets and invalid datagrams.
|
private boolean |
m_isClosing
When set the portal object's close method has been
invoked.
|
private int |
m_numOfExecutorThreads
the number of executor threads in the thread pool
specified during construction of SnmpPortal
|
private SnmpPortal.Receiver |
m_recvThread
the receiver thread that runs the inner class Receiver.
|
private java.util.Vector |
m_threadPool
The thread pool that holds the executor threads
|
private java.util.LinkedList |
m_usedBuffers
Cache used bufferes
|
static int |
MAXIMUM_THREADPOOL_SIZE |
private static java.lang.String |
PROP_SOCKET_TIMEOUT_PERIOD
Identifies the system property that may be used to specify the number of milliseconds to use for the
socket timeout.
|
private static java.lang.String |
PROP_SOCKET_TIMEOUT_REQUIRED
Identifies the system property that may be used to specify whether or not a timeout value is set
on the SNMP trap socket.
|
private static java.lang.Class |
THREAD_CATEGORY_CLASS |
Modifier | Constructor and Description |
---|---|
private |
SnmpPortal()
Private constructor used to disallow the
default constructor.
|
(package private) |
SnmpPortal(SnmpPacketHandler handler,
AsnEncoder encoder,
int port)
The SnmpPortal constructor.
|
(package private) |
SnmpPortal(SnmpPacketHandler handler,
AsnEncoder encoder,
int port,
java.net.InetAddress laddr)
The SnmpPortal constructor.
|
(package private) |
SnmpPortal(SnmpPacketHandler handler,
AsnEncoder encoder,
int port,
java.net.InetAddress laddr,
int numOfThreads) |
(package private) |
SnmpPortal(SnmpPacketHandler handler,
AsnEncoder encoder,
int port,
java.net.InetAddress laddr,
int numOfThreads,
int receiveBufferSize,
int sendBufferSize)
The SnmpPortal constructor.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
cacheBuffer(byte[] buffer) |
(package private) void |
close()
Used to close the session.
|
private static java.lang.Class |
findThreadCategoryClass() |
(package private) AsnEncoder |
getAsnEncoder()
Gets the AsnEncoder for the session.
|
(package private) byte[] |
getBuffer() |
(package private) SnmpPacketHandler |
getPacketHandler()
Gets the default SnmpPacketHandler for the session.
|
private void |
handlePkt(java.net.DatagramPacket pkt)
Recovers a SnmpPduPacket or SnmpPduTrap from the passed datagram
and calls the appropriate method in the handler.
|
(package private) void |
invokeHandlePkt(java.net.DatagramPacket pkt)
Wrapper for invoking the handlePkt method and handling the necessary exceptions.
|
(package private) boolean |
isClosed()
Returns true if this portal has had it's
close
method called. |
(package private) void |
send(SnmpPeer peer,
byte[] buf)
Transmits the passed buffer to the respective peer
agent.
|
(package private) void |
send(SnmpPeer peer,
byte[] buf,
int length)
Transmits the passed buffer to the respective peer
agent.
|
(package private) void |
setAsnEncoder(AsnEncoder encoder)
Sets the default encoder.
|
(package private) void |
setPacketHandler(SnmpPacketHandler hdl)
Sets the default SnmpPacketHandler.
|
public static final int DEFAULT_THREADPOOL_SIZE
public static final int MAXIMUM_THREADPOOL_SIZE
public static final int DEFAULT_RECEIVE_BUFFER_SIZE
public static final int DEFAULT_SEND_BUFFER_SIZE
public static final int DATAGRAM_SOCKET_BUFFER_SIZE
private SnmpPacketHandler m_handler
private java.net.DatagramSocket m_comm
private SnmpPortal.Receiver m_recvThread
private int m_numOfExecutorThreads
private java.util.Vector m_threadPool
private java.util.LinkedList m_usedBuffers
private AsnEncoder m_encoder
private volatile boolean m_isClosing
private boolean bSocketSoTimeoutRequired
private static final java.lang.String PROP_SOCKET_TIMEOUT_REQUIRED
private static final java.lang.String PROP_SOCKET_TIMEOUT_PERIOD
private static final java.lang.Class THREAD_CATEGORY_CLASS
private SnmpPortal() throws java.lang.UnsupportedOperationException
java.lang.UnsupportedOperationException
- Always thrown!SnmpPortal(SnmpPacketHandler handler, AsnEncoder encoder, int port) throws java.net.SocketException
handler
- The SNMP packet handler.encoder
- The ASN.1 codec object.port
- The port to send and receive datagram from.java.net.SocketException
- Thrown if an error occurs setting
up the communication channel.java.lang.IllegalArgumentException
- Thrown if any of the parameters
are null or invalid.SnmpPortal(SnmpPacketHandler handler, AsnEncoder encoder, int port, java.net.InetAddress laddr) throws java.net.SocketException
handler
- The SNMP packet handler.encoder
- The ASN.1 codec object.port
- The port to send and receive datagram from.laddr
- The local address to bind.java.net.SocketException
- Thrown if an error occurs setting
up the communication channel.java.lang.IllegalArgumentException
- Thrown if any of the parameters
are null or invalid.SnmpPortal(SnmpPacketHandler handler, AsnEncoder encoder, int port, java.net.InetAddress laddr, int numOfThreads) throws java.net.SocketException
java.net.SocketException
SnmpPortal(SnmpPacketHandler handler, AsnEncoder encoder, int port, java.net.InetAddress laddr, int numOfThreads, int receiveBufferSize, int sendBufferSize) throws java.net.SocketException
handler
- The SNMP packet handler.encoder
- The ASN.1 codec object.port
- The port to send and receive datagram from.laddr
- The local address to bind.numOfThreads
- The number of Executor threads in pool.receiveBufferSize
- Sets the SO_RCVBUF option to the specified value for this DatagramSocketsendBufferSize
- Sets the SO_SNDBUF option to the specified value for this DatagramSocket.java.net.SocketException
- Thrown if an error occurs setting
up the communication channel.java.lang.IllegalArgumentException
- Thrown if any of the parameters
are null or invalid.private static java.lang.Class findThreadCategoryClass()
void invokeHandlePkt(java.net.DatagramPacket pkt)
pkt
- The datagram packet to be decodednone
handlePkt
byte[] getBuffer()
void cacheBuffer(byte[] buffer)
private void handlePkt(java.net.DatagramPacket pkt) throws SnmpPduEncodingException, AsnDecodingException
pkt
- The datagram packet to be decodedSnmpPduEncodingException
- Thrown if a pdu or session level error occursAsnDecodingException
- Thrown if the AsnEncoder encounters an errorSnmpPduTrap
,
SnmpPduPacket
,
SnmpPduRequest
,
SnmpPduBulk
,
SnmpParameters
,
AsnEncoder
void send(SnmpPeer peer, byte[] buf, int length) throws java.io.IOException
peer
- The SNMP peer destinationbuf
- The buffer to transmit.length
- The valid length of the bufferjava.lang.IOException
- For more details see
java.net.DatagramSocket.java.io.IOException
DatagramSocket
void send(SnmpPeer peer, byte[] buf) throws java.io.IOException
peer
- The SNMP peer destinationbuf
- The buffer to transmit.java.lang.IOException
- For more details see
java.net.DatagramSocket.java.io.IOException
DatagramSocket
void setPacketHandler(SnmpPacketHandler hdl)
hdl
- The new handlerSnmpPacketHandler getPacketHandler()
void setAsnEncoder(AsnEncoder encoder)
encoder
- The new encoderAsnEncoder getAsnEncoder()
boolean isClosed()
close
method called.void close()
Generated by iurt on 2015.