Module org.snmp4j
Package org.snmp4j.transport
Class TcpTransportMapping<S extends AbstractSocketEntry>
java.lang.Object
org.snmp4j.transport.AbstractTransportMapping<TcpAddress>
org.snmp4j.transport.TcpTransportMapping<S>
- Type Parameters:
S- defines the type ofAbstractSocketEntryused by this transport mapping.
- All Implemented Interfaces:
Closeable,AutoCloseable,ConnectionOrientedTransportMapping<TcpAddress>,TransportMapping<TcpAddress>
- Direct Known Subclasses:
DefaultTcpTransportMapping,TLSTM
public abstract class TcpTransportMapping<S extends AbstractSocketEntry>
extends AbstractTransportMapping<TcpAddress>
implements ConnectionOrientedTransportMapping<TcpAddress>
The
TcpTransportMapping is the abstract base class for
TCP transport mappings.- Version:
- 3.4.4
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected longprivate static final LogAdapterprotected booleanEnable or disable automatic (re)opening the communication socket when sending a messageprotected booleanprotected CommonTimerprotected TcpAddressprivate List<TransportStateListener> Fields inherited from class org.snmp4j.transport.AbstractTransportMapping
asyncMsgProcessingSupported, listenWorkerTask, maxInboundMessageSize, suspendedAddresses, transportListener -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a transport state listener that is to be informed about connection state changes.protected voidabstract voidclose()Closes the transport an releases all bound resources synchronously.booleanclose(TcpAddress remoteAddress) Closes a connection to the supplied remote address, if it is open.protected voidcloseSockets(Map<Address, S> sockets) protected voidReturns the transport address that is used by this transport mapping for sending and receiving messages.longGets the connection timeout.Returns the address that represents the actual incoming address this transport mapping uses to listen for incoming packets.abstract MessageLengthDecoderReturns theMessageLengthDecoderused by this transport mapping.Gets the primaryAddressclass that is supported by this transport mapping.booleanIftrueand methodlisten()has not been called yet or the connection has been closed or reset, thenlisten()will be called to open the communication socket when a message is being sent usingsendMessage(TcpAddress, byte[], TransportStateReference, long, int).booleanChecks whether a server for incoming requests is enabled.abstract voidlisten()Listen for incoming messages.voidRemoves the supplied transport state listener.abstract voidsendMessage(TcpAddress address, byte[] message, TransportStateReference tmStateReference, long timeoutMillis, int maxRetries) Sends a message to the supplied address using this transport.voidsetConnectionTimeout(long connectionTimeout) Sets the connection timeout.abstract voidsetMessageLengthDecoder(MessageLengthDecoder messageLengthDecoder) Sets theMessageLengthDecoderthat decodes the total message length from the header of a message.voidsetOpenSocketOnSending(boolean openSocketOnSending) Activate or deactivate autolisten()whensendMessage(TcpAddress, byte[], TransportStateReference, long, int)is called but there is no listening socket.voidsetServerEnabled(boolean serverEnabled) Sets whether a server for incoming requests should be created when the transport is set into listen state.protected voidsetSocketOptions(ServerSocket serverSocket) Sets optional server socket options.protected voidMethods inherited from class org.snmp4j.transport.AbstractTransportMapping
addTransportListener, fireProcessMessage, getListenerWorkerTask, getMaxInboundMessageSize, getPriority, getThreadName, handleDroppedMessageToSend, isAsyncMsgProcessingSupported, isListening, removeAllTransportListeners, removeTransportListener, resumeAddress, setAsyncMsgProcessingSupported, setPriority, setThreadName, suspendAddressMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.snmp4j.transport.ConnectionOrientedTransportMapping
getSocketCleaner, resumeAddress, suspendAddressMethods inherited from interface org.snmp4j.TransportMapping
addTransportListener, getMaxInboundMessageSize, getSupportedAddressClasses, getSupportedTransportType, isAddressSupported, isAddressSupported, isListening, removeTransportListener
-
Field Details
-
logger
-
tcpAddress
-
sockets
-
connectionTimeout
protected long connectionTimeout -
socketCleaner
-
serverEnabled
protected boolean serverEnabled -
transportStateListeners
-
openSocketOnSending
protected boolean openSocketOnSendingEnable or disable automatic (re)opening the communication socket when sending a message
-
-
Constructor Details
-
TcpTransportMapping
-
-
Method Details
-
getSupportedAddressClass
Description copied from interface:TransportMappingGets the primaryAddressclass that is supported by this transport mapping.- Specified by:
getSupportedAddressClassin interfaceTransportMapping<S extends AbstractSocketEntry>- Specified by:
getSupportedAddressClassin classAbstractTransportMapping<TcpAddress>- Returns:
- a subclass of
Address.
-
getAddress
Returns the transport address that is used by this transport mapping for sending and receiving messages.- Returns:
- the
Addressused by this transport mapping. The returned instance must not be modified!
-
timeoutSocket
-
getListenAddress
Description copied from interface:TransportMappingReturns the address that represents the actual incoming address this transport mapping uses to listen for incoming packets.- Specified by:
getListenAddressin interfaceTransportMapping<S extends AbstractSocketEntry>- Returns:
- the address for incoming packets or
nullthis transport mapping is not configured to listen for incoming packets.
-
closeSockets
-
close
Closes a connection to the supplied remote address, if it is open. This method is particularly useful when not using a timeout for remote connections.- Specified by:
closein interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Parameters:
remoteAddress- the address of the peer socket.- Returns:
trueif the connection has been closed andfalseif there was nothing to close.- Throws:
IOException- if the remote address cannot be closed due to an IO exception.- Since:
- 1.7.1
-
sendMessage
public abstract void sendMessage(TcpAddress address, byte[] message, TransportStateReference tmStateReference, long timeoutMillis, int maxRetries) throws IOException Description copied from class:AbstractTransportMappingSends a message to the supplied address using this transport. If the target address has been suspended, then instead actually sending the message on the wire, the methodAbstractTransportMapping.handleDroppedMessageToSend(Address, byte[], TransportStateReference, long, int)will be called. To stop suspending of a target address, callAbstractTransportMapping.resumeAddress(Address)for that address.- Specified by:
sendMessagein interfaceTransportMapping<S extends AbstractSocketEntry>- Specified by:
sendMessagein classAbstractTransportMapping<TcpAddress>- Parameters:
address- anAddressinstance 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.timeoutMillis- maximum number of milli seconds the connection creation might take (if connection based).maxRetries- maximum retries during connection creation.- Throws:
IOException- if any underlying IO operation fails.
-
isOpenSocketOnSending
public boolean isOpenSocketOnSending()Iftrueand methodlisten()has not been called yet or the connection has been closed or reset, thenlisten()will be called to open the communication socket when a message is being sent usingsendMessage(TcpAddress, byte[], TransportStateReference, long, int).- Returns:
trueifsendMessage(TcpAddress, byte[], TransportStateReference, long, int)will ensure that a server socket is there for receiving responses,falseotherwise.- Since:
- 3.4.4
-
setOpenSocketOnSending
public void setOpenSocketOnSending(boolean openSocketOnSending) Activate or deactivate autolisten()whensendMessage(TcpAddress, byte[], TransportStateReference, long, int)is called but there is no listening socket.- Parameters:
openSocketOnSending-trueifsendMessage(TcpAddress, byte[], TransportStateReference, long, int)should ensure that server socket is available for communication,falseiflisten()must be called explicitly.- Since:
- 3.4.4
-
listen
Description copied from interface:TransportMappingListen for incoming messages. For connection oriented transports, this method needs to be called beforeTransportMapping.sendMessage(A, byte[], org.snmp4j.TransportStateReference, long, int)is called for the first time.- Specified by:
listenin interfaceTransportMapping<S extends AbstractSocketEntry>- Specified by:
listenin classAbstractTransportMapping<TcpAddress>- Throws:
IOException- if an IO operation exception occurs while starting the listener.
-
close
Description copied from interface:TransportMappingCloses the transport an releases all bound resources synchronously.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceTransportMapping<S extends AbstractSocketEntry>- Specified by:
closein classAbstractTransportMapping<TcpAddress>- Throws:
IOException- if any IO operation for the close fails.
-
isServerEnabled
public boolean isServerEnabled()Description copied from interface:ConnectionOrientedTransportMappingChecks whether a server for incoming requests is enabled.- Specified by:
isServerEnabledin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Returns:
- boolean
-
getMessageLengthDecoder
Returns theMessageLengthDecoderused by this transport mapping.- Specified by:
getMessageLengthDecoderin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Returns:
- a MessageLengthDecoder instance.
- Since:
- 1.7
-
setServerEnabled
public void setServerEnabled(boolean serverEnabled) Description copied from interface:ConnectionOrientedTransportMappingSets whether a server for incoming requests should be created when the transport is set into listen state. Setting this value has no effect until theTransportMapping.listen()method is called (if the transport is already listening,TransportMapping.close()has to be called before).- Specified by:
setServerEnabledin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Parameters:
serverEnabled- iftrueif the transport will listens for incoming requests afterTransportMapping.listen()has been called.
-
setMessageLengthDecoder
Sets theMessageLengthDecoderthat decodes the total message length from the header of a message.- Specified by:
setMessageLengthDecoderin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Parameters:
messageLengthDecoder- a MessageLengthDecoder instance.- Since:
- 1.7
-
getConnectionTimeout
public long getConnectionTimeout()Gets the connection timeout. This timeout specifies the time a connection may be idle before it is closed.- Specified by:
getConnectionTimeoutin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Returns:
- long the idle timeout in milliseconds.
-
setConnectionTimeout
public void setConnectionTimeout(long connectionTimeout) Sets the connection timeout. This timeout specifies the time a connection may be idle before it is closed.- Specified by:
setConnectionTimeoutin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Parameters:
connectionTimeout- the idle timeout in milliseconds. A zero or negative value will disable any timeout and connections opened by this transport mapping will stay opened until they are explicitly closed.
-
addTransportStateListener
Description copied from interface:ConnectionOrientedTransportMappingAdds a transport state listener that is to be informed about connection state changes.- Specified by:
addTransportStateListenerin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Parameters:
l- a TransportStateListener.
-
removeTransportStateListener
Description copied from interface:ConnectionOrientedTransportMappingRemoves the supplied transport state listener.- Specified by:
removeTransportStateListenerin interfaceConnectionOrientedTransportMapping<S extends AbstractSocketEntry>- Parameters:
l- a TransportStateListener.
-
fireConnectionStateChanged
-
setSocketOptions
Sets optional server socket options. The default implementation does nothing.- Parameters:
serverSocket- theServerSocketto apply additional non-default options.
-
getListenWorkerTask
-
cancelNonServerSelectionKey
-