Module org.snmp4j
Package org.snmp4j.transport
Class AbstractConnectionOrientedTransportMapping<A extends Address,S extends AbstractSocketEntry<A>>
- java.lang.Object
-
- org.snmp4j.transport.AbstractTransportMapping<A>
-
- org.snmp4j.transport.AbstractConnectionOrientedTransportMapping<A,S>
-
- Type Parameters:
A
- the address type.S
- the socket entry type.
- All Implemented Interfaces:
Closeable
,AutoCloseable
,ConnectionOrientedTransportMapping<A>
,TransportMapping<A>
- Direct Known Subclasses:
TcpTransportMapping
public abstract class AbstractConnectionOrientedTransportMapping<A extends Address,S extends AbstractSocketEntry<A>> extends AbstractTransportMapping<A> implements ConnectionOrientedTransportMapping<A>
TheAbstractConnectionOrientedTransportMapping
implements generic functions for a connection oriented transport mapping for server and client connections.- Since:
- 3.7.0
- Author:
- Frank Fock
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
serverEnabled
protected Map<A,S>
sockets
-
Fields inherited from class org.snmp4j.transport.AbstractTransportMapping
asyncMsgProcessingSupported, connectionTimeout, listenWorkerTask, maxInboundMessageSize, socketCleaner, suspendedAddresses, transportListener, transportStateListeners
-
-
Constructor Summary
Constructors Constructor Description AbstractConnectionOrientedTransportMapping()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
cancelNonServerSelectionKey(SelectionKey sk)
void
close()
Closes all open sockets and stops the internal server thread that processes messages.boolean
close(A remoteAddress)
Closes a connection to the supplied remote address, if it is open.protected void
closeSockets(Map<A,S> sockets)
long
getConnectionTimeout()
Gets the connection timeout.protected int
getMaxBusyLoops()
Map<A,S>
getSockets()
Gets an unmodifiable map of theAbstractSocketEntry
instances associated with this transport mapping.boolean
isServerEnabled()
Checks whether a server for incoming requests is enabled.void
setConnectionTimeout(long connectionTimeout)
Sets the connection timeout.protected void
setMaxBusyLoops(int maxBusyLoops)
void
setServerEnabled(boolean serverEnabled)
Sets whether a server for incoming requests should be created when the transport is set into listen state.protected void
setSocketOptions(ServerSocket serverSocket)
Sets optional server socket options.protected void
timeoutSocket(AbstractSocketEntry<A> entry)
abstract void
wakeupServerSelector()
-
Methods inherited from class org.snmp4j.transport.AbstractTransportMapping
addTransportListener, addTransportStateListener, fireConnectionStateChanged, fireProcessMessage, getListenAddress, getListenWorkerTask, getMaxInboundMessageSize, getPriority, getSocketCleaner, getSupportedAddressClass, getSuspendedAddresses, getThreadName, handleDroppedMessageToSend, isAsyncMsgProcessingSupported, isListening, listen, removeAllTransportListeners, removeTransportListener, removeTransportStateListener, resumeAddress, sendMessage, setAsyncMsgProcessingSupported, setPriority, setThreadName, suspendAddress
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.snmp4j.transport.ConnectionOrientedTransportMapping
addTransportStateListener, getMessageLengthDecoder, getSocketCleaner, removeTransportStateListener, resumeAddress, setMessageLengthDecoder, suspendAddress
-
Methods inherited from interface org.snmp4j.TransportMapping
addTransportListener, getListenAddress, getMaxInboundMessageSize, getSupportedAddressClass, getSupportedAddressClasses, getSupportedTransportType, isAddressSupported, isAddressSupported, isListening, listen, removeTransportListener, sendMessage
-
-
-
-
Method Detail
-
timeoutSocket
protected void timeoutSocket(AbstractSocketEntry<A> entry)
-
getConnectionTimeout
public long getConnectionTimeout()
Gets the connection timeout. This timeout specifies the time a connection may be idle before it is closed.- Specified by:
getConnectionTimeout
in interfaceConnectionOrientedTransportMapping<A extends Address>
- 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:
setConnectionTimeout
in interfaceConnectionOrientedTransportMapping<A extends Address>
- 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.
-
setSocketOptions
protected void setSocketOptions(ServerSocket serverSocket)
Sets optional server socket options. The default implementation does nothing.- Parameters:
serverSocket
- theServerSocket
to apply additional non-default options.
-
isServerEnabled
public boolean isServerEnabled()
Description copied from interface:ConnectionOrientedTransportMapping
Checks whether a server for incoming requests is enabled.- Specified by:
isServerEnabled
in interfaceConnectionOrientedTransportMapping<A extends Address>
- Returns:
- boolean
-
setServerEnabled
public void setServerEnabled(boolean serverEnabled)
Description copied from interface:ConnectionOrientedTransportMapping
Sets 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:
setServerEnabled
in interfaceConnectionOrientedTransportMapping<A extends Address>
- Parameters:
serverEnabled
- iftrue
if the transport will listens for incoming requests afterTransportMapping.listen()
has been called.
-
close
public boolean close(A remoteAddress) throws IOException
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:
close
in interfaceConnectionOrientedTransportMapping<A extends Address>
- Parameters:
remoteAddress
- the address of the peer socket.- Returns:
true
if the connection has been closed andfalse
if there was nothing to close.- Throws:
IOException
- if the remote address cannot be closed due to an IO exception.- Since:
- 1.7.1
-
close
public void close() throws IOException
Closes all open sockets and stops the internal server thread that processes messages.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in interfaceTransportMapping<A extends Address>
- Specified by:
close
in classAbstractTransportMapping<A extends Address>
- Throws:
IOException
- if any IO operation for the close fails.
-
wakeupServerSelector
public abstract void wakeupServerSelector()
-
getSockets
public Map<A,S> getSockets()
Gets an unmodifiable map of theAbstractSocketEntry
instances associated with this transport mapping.- Returns:
- an unmodifiable map from
Address
toAbstractSocketEntry
. - Since:
- 3.7.0
-
cancelNonServerSelectionKey
protected void cancelNonServerSelectionKey(SelectionKey sk)
-
getMaxBusyLoops
protected int getMaxBusyLoops()
-
setMaxBusyLoops
protected void setMaxBusyLoops(int maxBusyLoops)
-
-