org.snmp4j.transport
Class AbstractTransportMapping<A extends Address>

java.lang.Object
  extended by org.snmp4j.transport.AbstractTransportMapping<A>
All Implemented Interfaces:
TransportMapping<A>
Direct Known Subclasses:
DefaultSshTransportMapping, DummyTransport, DummyTransport.DummyTransportResponder, TcpTransportMapping, UdpTransportMapping

public abstract class AbstractTransportMapping<A extends Address>
extends java.lang.Object
implements TransportMapping<A>

The AbstractTransportMapping provides an abstract implementation for the message dispatcher list and the maximum inbound message size.

Version:
2.0
Author:
Frank Fock

Field Summary
protected  boolean asyncMsgProcessingSupported
           
protected  int maxInboundMessageSize
           
protected  java.util.List<TransportListener> transportListener
           
 
Constructor Summary
AbstractTransportMapping()
           
 
Method Summary
 void addTransportListener(TransportListener l)
          Adds a transport listener to the transport.
abstract  void close()
          Closes the transport an releases all bound resources synchronously.
protected  void fireProcessMessage(Address address, java.nio.ByteBuffer buf, TransportStateReference tmStateReference)
           
 int getMaxInboundMessageSize()
          Gets the maximum length of an incoming message that can be successfully processed by this transport mapping implementation.
abstract  java.lang.Class<? extends Address> getSupportedAddressClass()
          Gets the Address class that is supported by this transport mapping.
 boolean isAsyncMsgProcessingSupported()
          Returns true if asynchronous (multi-threaded) message processing may be implemented.
abstract  void listen()
          Listen for incoming messages.
 void removeTransportListener(TransportListener l)
          Removes a transport listener.
abstract  void sendMessage(A address, byte[] message, TransportStateReference tmStateReference)
          Sends a message to the supplied address using this transport.
 void setAsyncMsgProcessingSupported(boolean asyncMsgProcessingSupported)
          Specifies whether this transport mapping has to support asynchronous messages processing or not.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.snmp4j.TransportMapping
getListenAddress, isListening
 

Field Detail

transportListener

protected java.util.List<TransportListener> transportListener

maxInboundMessageSize

protected int maxInboundMessageSize

asyncMsgProcessingSupported

protected boolean asyncMsgProcessingSupported
Constructor Detail

AbstractTransportMapping

public AbstractTransportMapping()
Method Detail

getSupportedAddressClass

public abstract java.lang.Class<? extends Address> getSupportedAddressClass()
Description copied from interface: TransportMapping
Gets the Address class that is supported by this transport mapping.

Specified by:
getSupportedAddressClass in interface TransportMapping<A extends Address>
Returns:
a subclass of Address.

sendMessage

public abstract void sendMessage(A address,
                                 byte[] message,
                                 TransportStateReference tmStateReference)
                          throws java.io.IOException
Description copied from interface: TransportMapping
Sends a message to the supplied address using this transport.

Specified by:
sendMessage in interface TransportMapping<A extends Address>
Parameters:
address - an Address instance denoting the target address.
message - the whole message as an array of bytes.
tmStateReference - the (optional) transport model state reference as defined by RFC 5590 section 6.1.
Throws:
java.io.IOException - if any underlying IO operation fails.

addTransportListener

public void addTransportListener(TransportListener l)
Description copied from interface: TransportMapping
Adds a transport listener to the transport. Normally, at least one transport listener needs to be added to process incoming messages.

Specified by:
addTransportListener in interface TransportMapping<A extends Address>
Parameters:
l - a TransportListener instance.

removeTransportListener

public void removeTransportListener(TransportListener l)
Description copied from interface: TransportMapping
Removes a transport listener. Incoming messages will no longer be propagated to the supplied TransportListener.

Specified by:
removeTransportListener in interface TransportMapping<A extends Address>
Parameters:
l - a TransportListener instance.

fireProcessMessage

protected void fireProcessMessage(Address address,
                                  java.nio.ByteBuffer buf,
                                  TransportStateReference tmStateReference)

close

public abstract void close()
                    throws java.io.IOException
Description copied from interface: TransportMapping
Closes the transport an releases all bound resources synchronously.

Specified by:
close in interface TransportMapping<A extends Address>
Throws:
java.io.IOException - if any IO operation for the close fails.

listen

public abstract void listen()
                     throws java.io.IOException
Description copied from interface: TransportMapping
Listen for incoming messages. For connection oriented transports, this method needs to be called before TransportMapping.sendMessage(A, byte[], org.snmp4j.TransportStateReference) is called for the first time.

Specified by:
listen in interface TransportMapping<A extends Address>
Throws:
java.io.IOException - if an IO operation exception occurs while starting the listener.

getMaxInboundMessageSize

public int getMaxInboundMessageSize()
Description copied from interface: TransportMapping
Gets the maximum length of an incoming message that can be successfully processed by this transport mapping implementation.

Specified by:
getMaxInboundMessageSize in interface TransportMapping<A extends Address>
Returns:
an integer > 484.

isAsyncMsgProcessingSupported

public boolean isAsyncMsgProcessingSupported()
Returns true if asynchronous (multi-threaded) message processing may be implemented. The default is true.

Returns:
if false is returned the MessageDispatcher.processMessage(org.snmp4j.TransportMapping, org.snmp4j.smi.Address, java.nio.ByteBuffer, org.snmp4j.TransportStateReference) method must not return before the message has been entirely processed.

setAsyncMsgProcessingSupported

public void setAsyncMsgProcessingSupported(boolean asyncMsgProcessingSupported)
Specifies whether this transport mapping has to support asynchronous messages processing or not.

Parameters:
asyncMsgProcessingSupported - if false the MessageDispatcher.processMessage(org.snmp4j.TransportMapping, org.snmp4j.smi.Address, java.nio.ByteBuffer, org.snmp4j.TransportStateReference) method must not return before the message has been entirely processed, because the incoming message buffer is not copied before the message is being processed. If true the message buffer is copied for each call, so that the message processing can be implemented asynchronously.

Copyright 2005-2011 Frank Fock (SNMP4J.org)

Copyright © 2011 SNMP4J.org. All Rights Reserved.