org.opennms.protocols.snmp
Class SnmpPortal

java.lang.Object
  |
  +--org.opennms.protocols.snmp.SnmpPortal

class SnmpPortal
extends Object

Abstracts the communication related details from the SnmpSession and SnmpTrapSession.

Version:
$Revision: 1.7 $ $Date: 2000/10/31 22:11:47 $
Author:
Brian Weaver, OpenNMS, Sowmya
See Also:
SnmpSession, SnmpTrapSession, DatagramSocket

Inner Class Summary
private  class SnmpPortal.Receiver
          Defines the inner class that monitors the datagram socket and receives all the PDU responses.
 
Field Summary
private  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  Thread m_recvThread
          the receiver thread that runs the inner class Receiver.
 
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(DatagramPacket pkt)
          Recovers a SnmpPduPacket or SnmpPduTrap from the passed datagram and calls the appropriate method in the handler.
(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, registerNatives, 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 DatagramSocket m_comm
The datagram socket used to send and receive SNMP messages.

m_recvThread

private 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 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.
Constructor Detail

SnmpPortal

private SnmpPortal()
            throws UnsupportedOperationException
Private constructor used to disallow the default constructor.
Throws:
UnsupportedOperationException - Always thrown!

SnmpPortal

SnmpPortal(SnmpPacketHandler handler,
           AsnEncoder encoder,
           int port)
     throws 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:
SocketException - Thrown if an error occurs setting up the communication channel.
IllegalArgumentException - Thrown if any of the parameters are null or invalid.
Method Detail

handlePkt

void handlePkt(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 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.
See Also:
DatagramSocket

send

void send(SnmpPeer peer,
          byte[] buf)
    throws 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.
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

close

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