OpenNMS API 1.2.3

org.opennms.protocols.snmp
Class SnmpPortal

java.lang.Object
  extended byorg.opennms.protocols.snmp.SnmpPortal

public class SnmpPortal
extends java.lang.Object

Abstracts the communication related details from the SnmpSession and SnmpTrapSession.

Author:
Brian Weaver , Sowmya Nataraj , OpenNMS
See Also:
SnmpSession, SnmpTrapSession, DatagramSocket

Nested Class Summary
private  class SnmpPortal.Receiver
          Defines the inner class that monitors the datagram socket and receives all the PDU responses.
 
Field Summary
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.
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  java.lang.Thread m_recvThread
          the receiver thread that runs the inner class Receiver.
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.
 
Constructor Summary
private SnmpPortal()
          Private constructor used to disallow the default constructor.
(package private) SnmpPortal(SnmpPacketHandler handler, AsnEncoder encoder, int port)
          The SnmpPortal constructor.
 
Method Summary
(package private)  void close()
          Used to close the session.
(package private)  AsnEncoder getAsnEncoder()
          Gets the AsnEncoder for the session.
(package private)  SnmpPacketHandler getPacketHandler()
          Gets the default SnmpPacketHandler for the session.
(package 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)  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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

m_handler

private SnmpPacketHandler m_handler
The packet handler that is used to process received SNMP packets and invalid datagrams. The handler must also process any exceptions that occurs in the receiving thread.


m_comm

private java.net.DatagramSocket m_comm
The datagram socket used to send and receive SNMP messages.


m_recvThread

private java.lang.Thread m_recvThread
the receiver thread that runs the inner class Receiver.


m_encoder

private AsnEncoder m_encoder
ASN.1 encoder used to decode the SNMP messages. If the decoded fails to decode the specific messages the is should throw and appropiate ASN.1 exception


m_isClosing

private volatile boolean m_isClosing
When set the portal object's close method has been invoked. This is needed since the internal receiver thread will block on the communication channel. To "wake" the thread the close() method on the comm channel is performed. This will cause an exception to be genereated in the receiver thread. If the value of m_isClosing is true then the exception is ignored.


bSocketSoTimeoutRequired

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. This value is configurable at runtime via the system property "org.opennms.joeSNMP.vmhacks.socketSoTimeoutRequired". If this property is set to 'no', the bSocketSoTimeoutRequired variable will be set to false and the SNMP trap socket timeout will not be set. If this property is set to 'yes' or the property does not exist, the bSocketSoTimeoutRequired variable will be set to true. and the socket timeout will be set. Default value is true.


PROP_SOCKET_TIMEOUT_REQUIRED

private static final 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. Valid values are 'yes' and 'no'.

See Also:
Constant Field Values

PROP_SOCKET_TIMEOUT_PERIOD

private static final 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.

See Also:
Constant Field Values
Constructor Detail

SnmpPortal

private SnmpPortal()
            throws java.lang.UnsupportedOperationException
Private constructor used to disallow the default constructor.

Throws:
java.lang.UnsupportedOperationException - Always thrown!

SnmpPortal

SnmpPortal(SnmpPacketHandler handler,
           AsnEncoder encoder,
           int port)
     throws java.net.SocketException
The SnmpPortal constructor. The constructor is used to build a portal on the specified port, and forward messages to the defined handler. All messages are decoded using the encoder specified during construction.

Parameters:
handler - The SNMP packet handler.
encoder - The ASN.1 codec object.
port - The port to send and receive datagram from.
Throws:
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.
Method Detail

handlePkt

void handlePkt(java.net.DatagramPacket pkt)
         throws SnmpPduEncodingException,
                AsnDecodingException
Recovers a SnmpPduPacket or SnmpPduTrap from the passed datagram and calls the appropriate method in the handler. If an error occurs recovering the packet then an exception is generated. The pdu can be one of SnmpPduRequest or SnmpPduBulk. The internal session AsnEncoder defined in the SnmpParameters is used to recover the pdu.

Parameters:
pkt - The datagram packet to be decoded
Throws:
SnmpPduEncodingException - Thrown if a pdu or session level error occurs
AsnDecodingException - Thrown if the AsnEncoder encounters an error
See Also:
SnmpPduTrap, SnmpPduPacket, SnmpPduRequest, SnmpPduBulk, SnmpParameters, AsnEncoder

send

void send(SnmpPeer peer,
          byte[] buf,
          int length)
    throws java.io.IOException
Transmits the passed buffer to the respective peer agent. If a failure occurs then an IOException is thrown.

Parameters:
peer - The SNMP peer destination
buf - The buffer to transmit.
length - The valid length of the buffer
Throws:
java.lang.IOException - For more details see java.net.DatagramSocket.
java.io.IOException
See Also:
DatagramSocket

send

void send(SnmpPeer peer,
          byte[] buf)
    throws java.io.IOException
Transmits the passed buffer to the respective peer agent. If a failure occurs then an IOException is thrown.

Parameters:
peer - The SNMP peer destination
buf - The buffer to transmit.
Throws:
java.lang.IOException - For more details see java.net.DatagramSocket.
java.io.IOException
See Also:
DatagramSocket

setPacketHandler

void setPacketHandler(SnmpPacketHandler hdl)
Sets the default SnmpPacketHandler.

Parameters:
hdl - The new handler

getPacketHandler

SnmpPacketHandler getPacketHandler()
Gets the default SnmpPacketHandler for the session.

Returns:
the SnmpPacketHandler

setAsnEncoder

void setAsnEncoder(AsnEncoder encoder)
Sets the default encoder.

Parameters:
encoder - The new encoder

getAsnEncoder

AsnEncoder getAsnEncoder()
Gets the AsnEncoder for the session.

Returns:
the AsnEncoder

isClosed

boolean isClosed()
Returns true if this portal has had it's close method called.


close

void close()
Used to close the session. Once called the session should be considered invalid and unusable.


OpenNMS API 1.2.3

Generated by eevans on May 29 2005 2015.