org.opennms.protocols.snmp
Class SnmpSession

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

public class SnmpSession
extends java.lang.Object

The SnmpSession is the main connection between the SNMP manager and the SNMP Agent. All the request flow through this class. To use the SnmpSession class a SnmpHandler class must be defined to process any errors or responses through the library.

Once the session is created the creator must call close() to ensure an orderly release of threads and resources.

See Also:
SnmpHandler, SnmpPacketHandler, SnmpPortal

Field Summary
static int ERROR_ENCODING
          This is the command passed to the SnmpHandler if an encoding exception is generated when attempting to send an SnmpPduRequest message
static int ERROR_IOEXCEPTION
          This is the command passed to the SnmpHandler if an IOException occurs while attempting to transmit the request
static int ERROR_TIMEOUT
          This is the command passed to the SnmpHandler if a timeout occurs.
 
Constructor Summary
SnmpSession(java.net.InetAddress peer)
          The default SnmpSession constructor.
SnmpSession(java.net.InetAddress peer, SnmpParameters params)
          Constructs the SnmpSession with the specific parameters.
SnmpSession(SnmpPeer peer)
          Constructs the SnmpSession with the specific SnmpPeer.
 
Method Summary
 void cancel(int requestId)
          Cancels the current outstanding reqeust as defined by the SnmpPduPacket's requestId method.
 void close()
          Used to close the session.
 org.opennms.protocols.snmp.asn1.AsnEncoder getAsnEncoder()
          Gets the AsnEncoder for the session.
 SnmpHandler getDefaultHandler()
          Gets the default SnmpHandler for the session.
 int getOutstandingCount()
          Returns the number of outstanding request for the agent.
 SnmpPeer getPeer()
          Gets the current peer object.
 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.
static void registerSyntaxObject(SnmpSyntax object)
          Allows library users to register new ASN.1 types with the SNMP library.
 int send(SnmpPduPacket pdu)
          Sends the SNMP PDU to the remote agent and uses the default SnmpHandler to process the request.
 int send(SnmpPduPacket pdu, SnmpHandler handler)
          Send the SNMP PDU to the remote agent and invokes the specified handler when the packet is recieve.
 int send(SnmpPduTrap pdu)
          Sends the SNMP PDU Trap to the remote agent.
 int send(SnmpPduTrap pdu, SnmpHandler handler)
          Send the SNMP PDU Trap to the remote agent.
 void setAsnEncoder(org.opennms.protocols.snmp.asn1.AsnEncoder encoder)
          Sets the default encoder.
 void setDefaultHandler(SnmpHandler hdl)
          Sets the default SnmpHandler.
 void setPeer(SnmpPeer peer)
          Sets the passed SnmpPeer object to the one used for all new SNMP communications.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ERROR_TIMEOUT

public static final int ERROR_TIMEOUT
This is the command passed to the SnmpHandler if a timeout occurs. All errors are less than zero.

See Also:
SnmpHandler, Constant Field Values

ERROR_IOEXCEPTION

public static final int ERROR_IOEXCEPTION
This is the command passed to the SnmpHandler if an IOException occurs while attempting to transmit the request

See Also:
SnmpHandler, Constant Field Values

ERROR_ENCODING

public static final int ERROR_ENCODING
This is the command passed to the SnmpHandler if an encoding exception is generated when attempting to send an SnmpPduRequest message

See Also:
SnmpHandler, Constant Field Values
Constructor Detail

SnmpSession

public SnmpSession(java.net.InetAddress peer)
            throws java.net.SocketException
The default SnmpSession constructor. The object is constructed with a default SnmpPeer object.

Parameters:
peer - The peer agent
Throws:
java.net.SocketException - If thrown it is from the creation of a DatagramSocket.
See Also:
SnmpPeer

SnmpSession

public SnmpSession(SnmpPeer peer)
            throws java.net.SocketException
Constructs the SnmpSession with the specific SnmpPeer.

Parameters:
peer - The SnmpPeer used to configure this session
Throws:
java.net.SocketException - If thrown it is from the creation of a DatagramSocket.
See Also:
SnmpPeer

SnmpSession

public SnmpSession(java.net.InetAddress peer,
                   SnmpParameters params)
            throws java.net.SocketException
Constructs the SnmpSession with the specific parameters. The parameters are associated with the default SnmpPeer object.

Parameters:
peer - The peer address for agent
params - The SnmpParameters to configure with this session
Throws:
java.net.SocketException - If thrown it is from the creation of a DatagramSocket.
See Also:
SnmpPeer, SnmpParameters
Method Detail

getDefaultHandler

public SnmpHandler getDefaultHandler()
Gets the default SnmpHandler for the session. If the handler has never been set via the setDefaultHandler() method then a null will be returned.

Returns:
The default SnmpHandler, a null if one has never been registered.

setDefaultHandler

public void setDefaultHandler(SnmpHandler hdl)
Sets the default SnmpHandler.

Parameters:
hdl - The new default handler

getPeer

public SnmpPeer getPeer()
Gets the current peer object.

Returns:
The current SnmpPeer object

setPeer

public void setPeer(SnmpPeer peer)
Sets the passed SnmpPeer object to the one used for all new SNMP communications. This includes any outstanding retries.

Parameters:
peer - The SnmpPeer object for the sesison

getOutstandingCount

public int getOutstandingCount()
Returns the number of outstanding request for the agent. An outstanding request is one that has no yet responded to the query.

Returns:
The number of outstanding request
Throws:
java.lang.IllegalStateException - Throw if the session has been closed.

cancel

public void cancel(int requestId)
Cancels the current outstanding reqeust as defined by the SnmpPduPacket's requestId method.

Parameters:
requestId - The request to cancel
Throws:
java.lang.IllegalStateException - Throw if the session has been closed.
See Also:
SnmpPduPacket

send

public int send(SnmpPduPacket pdu,
                SnmpHandler handler)
Send the SNMP PDU to the remote agent and invokes the specified handler when the packet is recieve. This is a non-blocking call.

Parameters:
pdu - The pdu to encode and send
handler - The handler object for this request
Returns:
The request identifier for the newly sent PDU.
Throws:
SnmpHandlerNotDefinedException - Thrown if the handler is null
java.lang.IllegalStateException - Thrown if the session has been closed.

send

public int send(SnmpPduPacket pdu)
Sends the SNMP PDU to the remote agent and uses the default SnmpHandler to process the request. This is a non-blocking call

Parameters:
pdu - The pdu to encode and send
Returns:
The request identifier for the newly sent PDU.
Throws:
SnmpHandlerNotDefinedException - Thrown if the handler is null
java.lang.IllegalStateException - Thrown if the session has been closed.

send

public int send(SnmpPduTrap pdu,
                SnmpHandler handler)
Send the SNMP PDU Trap to the remote agent. This is a non-blocking call.

Parameters:
pdu - The pdu to encode and send
handler - The handler object for this request
Returns:
The request identifier for the newly sent PDU.
Throws:
SnmpHandlerNotDefinedException - Thrown if the handler is null
java.lang.IllegalStateException - Thrown if the session has been closed.

send

public int send(SnmpPduTrap pdu)
Sends the SNMP PDU Trap to the remote agent. This is a non-blocking call

Parameters:
pdu - The pdu to encode and send
Returns:
The request identifier for the newly sent PDU.
Throws:
SnmpHandlerNotDefinedException - Thrown if the handler is null
java.lang.IllegalStateException - Thrown if the session has been closed.

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 has already been closed by another thread.

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.

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

registerSyntaxObject

public static void registerSyntaxObject(SnmpSyntax object)
Allows library users to register new ASN.1 types with the SNMP library. The object must support all methods of the SnmpSyntax interface. The object is registered globally with the library and is visible to all session after it is registered.

Parameters:
object - The new SnmpSyntax object to register