Package org.snmp4j.transport
Class DefaultUdpTransportMapping
java.lang.Object
org.snmp4j.transport.AbstractTransportMapping<UdpAddress>
org.snmp4j.transport.UdpTransportMapping
org.snmp4j.transport.DefaultUdpTransportMapping
- All Implemented Interfaces:
 TransportMapping<UdpAddress>
The 
DefaultUdpTransportMapping implements a UDP transport
 mapping based on Java standard IO and using an internal thread for
 listening on the inbound socket.- Version:
 - 1.9
 - Author:
 - Frank Fock
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionprotected WorkerTaskprotected org.snmp4j.transport.DefaultUdpTransportMapping.ListenThreadprotected DatagramSocketFields inherited from class org.snmp4j.transport.UdpTransportMapping
udpAddressFields inherited from class org.snmp4j.transport.AbstractTransportMapping
asyncMsgProcessingSupported, maxInboundMessageSize, maxOutboundMessageSize, transportListener - 
Constructor Summary
ConstructorsConstructorDescriptionCreates a UDP transport with an arbitrary local port on all local interfaces.DefaultUdpTransportMapping(UdpAddress udpAddress) Creates a UDP transport on the specified address.DefaultUdpTransportMapping(UdpAddress udpAddress, boolean reuseAddress) Creates a UDP transport with optional reusing the address if is currently in timeout state (TIME_WAIT) after the connection is closed. - 
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closes the socket and stops the listener thread.Returns the address that represents the actual incoming address this transport mapping uses to listen for incoming packets.intReturns the priority of the internal listen thread.intGets the requested receive buffer size for the underlying UDP socket.intReturns the socket timeout.Returns the name of the listen thread.booleanReturnstrueif the transport mapping is listening for incoming messages.voidlisten()Starts the listener thread that accepts incoming messages.protected DatagramSocketrenewSocketAfterException(SocketException socketException, DatagramSocket failedSocket) If receiving new datagrams fails with aSocketException, this method is called to renew the socket - if possible.voidsendMessage(UdpAddress targetAddress, byte[] message, TransportStateReference tmStateReference) Sends a message to the supplied address using this transport.voidsetMaxInboundMessageSize(int maxInboundMessageSize) voidsetPriority(int newPriority) Changes the priority of the listen thread for this UDP transport mapping.voidsetReceiveBufferSize(int receiveBufferSize) Sets the receive buffer size, which should be greater than the maximum inbound message size.voidsetSocketTimeout(int socketTimeout) Sets the socket timeout in milliseconds.voidsetThreadName(String name) Sets the name of the listen thread for this UDP transport mapping.Methods inherited from class org.snmp4j.transport.UdpTransportMapping
getAddress, getSupportedAddressClassMethods inherited from class org.snmp4j.transport.AbstractTransportMapping
addTransportListener, fireProcessMessage, getMaxInboundMessageSize, getMaxOutboundMessageSize, isAsyncMsgProcessingSupported, removeAllTransportListeners, removeTransportListener, setAsyncMsgProcessingSupported 
- 
Field Details
- 
socket
 - 
listener
 - 
listenerThread
protected org.snmp4j.transport.DefaultUdpTransportMapping.ListenThread listenerThread 
 - 
 - 
Constructor Details
- 
DefaultUdpTransportMapping
Creates a UDP transport with an arbitrary local port on all local interfaces.- Throws:
 IOException- if socket binding fails.
 - 
DefaultUdpTransportMapping
Creates a UDP transport with optional reusing the address if is currently in timeout state (TIME_WAIT) after the connection is closed.- Parameters:
 udpAddress- the local address for sending and receiving of UDP messages.reuseAddress- iftrueaddresses are reused which provides faster socket binding if an application is restarted for instance.- Throws:
 IOException- if socket binding fails.- Since:
 - 1.7.3
 
 - 
DefaultUdpTransportMapping
Creates a UDP transport on the specified address. The address will not be reused if it is currently in timeout state (TIME_WAIT).- Parameters:
 udpAddress- the local address for sending and receiving of UDP messages.- Throws:
 IOException- if socket binding fails.
 
 - 
 - 
Method Details
- 
sendMessage
public void sendMessage(UdpAddress targetAddress, byte[] message, TransportStateReference tmStateReference) throws IOException Description copied from interface:TransportMappingSends a message to the supplied address using this transport.- Specified by:
 sendMessagein interfaceTransportMapping<UdpAddress>- Specified by:
 sendMessagein classUdpTransportMapping- Parameters:
 targetAddress- 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.- Throws:
 IOException- if any underlying IO operation fails.
 - 
close
Closes the socket and stops the listener thread.- Specified by:
 closein interfaceTransportMapping<UdpAddress>- Specified by:
 closein classUdpTransportMapping- Throws:
 IOException- if the socket cannot be closed.
 - 
listen
Starts the listener thread that accepts incoming messages. The thread is started in daemon mode and thus it will not block application terminated. Nevertheless, theclose()method should be called to stop the listen thread gracefully and free associated ressources.- Specified by:
 listenin interfaceTransportMapping<UdpAddress>- Specified by:
 listenin classUdpTransportMapping- Throws:
 IOException- if the listen port could not be bound to the server thread.
 - 
setPriority
public void setPriority(int newPriority) Changes the priority of the listen thread for this UDP transport mapping. This method has no effect, if called beforelisten()has been called for this transport mapping.- Parameters:
 newPriority- the new priority.- Since:
 - 1.2.2
 - See Also:
 
 - 
getPriority
public int getPriority()Returns the priority of the internal listen thread.- Returns:
 - a value between 
Thread.MIN_PRIORITYandThread.MAX_PRIORITY. - Since:
 - 1.2.2
 
 - 
setThreadName
Sets the name of the listen thread for this UDP transport mapping. This method has no effect, if called beforelisten()has been called for this transport mapping.- Parameters:
 name- the new thread name.- Since:
 - 1.6
 
 - 
getThreadName
Returns the name of the listen thread.- Returns:
 - the thread name if in listening mode, otherwise 
null. - Since:
 - 1.6
 
 - 
setMaxInboundMessageSize
public void setMaxInboundMessageSize(int maxInboundMessageSize)  - 
getSocketTimeout
public int getSocketTimeout()Returns the socket timeout. 0 returns implies that the option is disabled (i.e., timeout of infinity).- Returns:
 - the socket timeout setting.
 
 - 
getReceiveBufferSize
public int getReceiveBufferSize()Gets the requested receive buffer size for the underlying UDP socket. This size might not reflect the actual size of the receive buffer, which is implementation specific.- Returns:
 - <=0 if the default buffer size of the OS is used, or a value >0 if the user specified a buffer size.
 
 - 
setReceiveBufferSize
public void setReceiveBufferSize(int receiveBufferSize) Sets the receive buffer size, which should be greater than the maximum inbound message size. This method has to be called beforelisten()to be effective.- Parameters:
 receiveBufferSize- an integer value >0 and >AbstractTransportMapping.getMaxInboundMessageSize().
 - 
setSocketTimeout
public void setSocketTimeout(int socketTimeout) Sets the socket timeout in milliseconds.- Parameters:
 socketTimeout- the socket timeout for incoming messages in milliseconds. A timeout of zero is interpreted as an infinite timeout.
 - 
isListening
public boolean isListening()Description copied from interface:TransportMappingReturnstrueif the transport mapping is listening for incoming messages. For connection oriented transport mappings this is a prerequisite to be able to send SNMP messages. For connectionless transport mappings it is a prerequisite to be able to receive responses.- Returns:
 trueif this transport mapping is listening for messages.
 - 
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<UdpAddress>- Overrides:
 getListenAddressin classUdpTransportMapping- Returns:
 - the address for incoming packets or 
nullthis transport mapping is not configured to listen for incoming packets. 
 - 
renewSocketAfterException
protected DatagramSocket renewSocketAfterException(SocketException socketException, DatagramSocket failedSocket) throws SocketException If receiving new datagrams fails with aSocketException, this method is called to renew the socket - if possible.- Parameters:
 socketException- the exception that occurred.failedSocket- the socket that caused the exception. By default, he socket will be closed in order to be able to reopen it. Implementations may also try to reuse the socket, in dependence of thesocketException.- Returns:
 - the new socket or 
nullif the listen thread should be terminated with the provided exception. - Throws:
 SocketException- a new socket exception if the socket could not be renewed.- Since:
 - 2.2.2
 
 
 -