org.opennms.protocols.snmp
Class SnmpTrapSession

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

public final class SnmpTrapSession
extends java.lang.Object

The trap session is used to send and receives SNMPv1 & v2 trap messages. The messages are received on the configured port, or the default(162) port and then decoded using the set ASN.1 codec. When messages are sent they are encoded using the passed SnmpParameters object that is part of the SnmpPeer object.

A trap message handler must be bound to the session in order to send or receive messages.

See Also:
SnmpTrapHandler

Field Summary
static int DEFAULT_PORT
          This is the default port where traps should be sent and received as defined by the RFC.
static int ERROR_EXCEPTION
          Defines a error due to a thown exception.
static int ERROR_INVALID_PDU
          Defines an error condition with an invalid PDU.
 
Constructor Summary
SnmpTrapSession(SnmpTrapHandler handler)
          The default SnmpTrapSession constructor.
SnmpTrapSession(SnmpTrapHandler handler, int port)
          The default SnmpTrapSession constructor that takes a packet handler as parameter.
 
Method Summary
 void close()
          Used to close the session.
 org.opennms.protocols.snmp.asn1.AsnEncoder getAsnEncoder()
          Gets the AsnEncoder for the session.
 SnmpTrapHandler getHandler()
          Returns the trap handler for this trap session.
 boolean isClosed()
          Returns true if the close method has been called.
 void raise()
          If an exception occurs in the SNMP receiver thread then raise() will rethrow the exception.
 void send(SnmpPeer peer, SnmpPduPacket pdu)
          Transmits the specified SnmpRequest to the SnmpPeer defined.
 void send(SnmpPeer peer, SnmpPduTrap trap)
          Transmits the specified SnmpPduTrap to the SnmpPeer defined The SnmpPduTrap is encoded using the peer AsnEncoder, as defined by the SnmpParameters.
 void setAsnEncoder(org.opennms.protocols.snmp.asn1.AsnEncoder encoder)
          Sets the default encoder.
 void setHandler(SnmpTrapHandler hdl)
          Sets the trap handler for the session.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ERROR_EXCEPTION

public static final int ERROR_EXCEPTION

Defines a error due to a thown exception. When the snmpTrapSessionError method is invoked in the trap handler, the exception object is passed as the ref parameter.

See Also:
SnmpTrapHandler.snmpTrapSessionError(org.opennms.protocols.snmp.SnmpTrapSession, int, java.lang.Object), Constant Field Values

ERROR_INVALID_PDU

public static final int ERROR_INVALID_PDU

Defines an error condition with an invalid PDU. For the moment this is not actually used, but reserved for future use. When the session trap handler error method is invoke the pdu in error should be passed as the ref parameters

See Also:
SnmpTrapHandler.snmpTrapSessionError(org.opennms.protocols.snmp.SnmpTrapSession, int, java.lang.Object), Constant Field Values

DEFAULT_PORT

public static final int DEFAULT_PORT
This is the default port where traps should be sent and received as defined by the RFC.

See Also:
Constant Field Values
Constructor Detail

SnmpTrapSession

public SnmpTrapSession(SnmpTrapHandler handler)
                throws java.net.SocketException
The default SnmpTrapSession constructor.

Parameters:
handler - The handler associated for message processing.
Throws:
java.net.SocketException - If thrown it is from the creation of a DatagramSocket.
java.lang.SecurityException - Thrown if the security manager disallows the creation of the handler.

SnmpTrapSession

public SnmpTrapSession(SnmpTrapHandler handler,
                       int port)
                throws java.net.SocketException
The default SnmpTrapSession constructor that takes a packet handler as parameter. Also changes the default port to listen on

Throws:
java.net.SocketException - If thrown it is from the creation of a DatagramSocket.
Method Detail

getHandler

public SnmpTrapHandler getHandler()
Returns the trap handler for this trap session.

Returns:
The SnmpTrapHandler

setHandler

public void setHandler(SnmpTrapHandler hdl)
Sets the trap handler for the session.

Parameters:
hdl - The new packet handler

setAsnEncoder

public void setAsnEncoder(org.opennms.protocols.snmp.asn1.AsnEncoder encoder)
Sets the default encoder.

Parameters:
encoder - The new encoder

getAsnEncoder

public org.opennms.protocols.snmp.asn1.AsnEncoder getAsnEncoder()
Gets the AsnEncoder for the session.

Returns:
the AsnEncoder

isClosed

public boolean isClosed()
Returns true if the close method has been called. The session cannot be used to send request after close has been executed.


close

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

Throws:
java.lang.IllegalStateException - Thrown if the session was already closed.

raise

public void raise()
           throws java.lang.Throwable
If an exception occurs in the SNMP receiver thread then raise() will rethrow the exception.

Throws:
java.lang.Throwable - The base for thrown exceptions.

send

public void send(SnmpPeer peer,
                 SnmpPduTrap trap)
          throws SnmpPduEncodingException,
                 org.opennms.protocols.snmp.asn1.AsnEncodingException,
                 java.io.IOException
Transmits the specified SnmpPduTrap to the SnmpPeer defined The SnmpPduTrap is encoded using the peer AsnEncoder, as defined by the SnmpParameters. Once the packet is encoded it is transmitted to the agent defined by SnmpPeer. If an error occurs an appropiate exception is generated.

Parameters:
peer - The remote peer to send to.
trap - The SnmpPduTrap to transmit
Throws:
SnmpPduEncodingException - Thrown if an encoding exception occurs at the session level
org.opennms.protocols.snmp.asn1.AsnEncodingException - Thrown if an encoding exception occurs in the AsnEncoder object.
java.io.IOException - Thrown if an error occurs sending the encoded datagram
java.lang.IllegalStateException - Thrown if the session has been closed.
See Also:
SnmpRequest, SnmpParameters, SnmpPeer

send

public void send(SnmpPeer peer,
                 SnmpPduPacket pdu)
          throws SnmpPduEncodingException,
                 org.opennms.protocols.snmp.asn1.AsnEncodingException,
                 java.io.IOException
Transmits the specified SnmpRequest to the SnmpPeer defined. First the SnmpPdu contained within the request is encoded using the peer AsnEncoder, as defined by the SnmpParameters. Once the packet is encoded it is transmitted to the agent defined by SnmpPeer. If an error occurs an appropiate exception is generated.

Parameters:
peer - The remote peer to send to.
pdu - The pdu to transmit
Throws:
SnmpPduEncodingException - Thrown if an encoding exception occurs at the session level
org.opennms.protocols.snmp.asn1.AsnEncodingException - Thrown if an encoding exception occurs in the AsnEncoder object.
java.io.IOException - Thrown if an error occurs sending the encoded datagram
java.lang.IllegalStateException - Thrown if the session has been closed.
See Also:
SnmpRequest, SnmpParameters, SnmpPeer