Package org.acplt.oncrpc
Class OncRpcUdpSocketHelper
- java.lang.Object
-
- org.acplt.oncrpc.OncRpcUdpSocketHelper
-
public class OncRpcUdpSocketHelper extends java.lang.Object
Wraps JRE-specific networking code for UDP/IP-based client sockets. So much for compile once, make it unuseable everywhere.The following JRE-dependent methods are wrapped and will just do nothing or return fake information on old JRE plattforms. The number after each method wrapper indicates the first JRE version supporting a particular feature:
- setSendBufferSize() -- 1.2
- setReceiveBufferSize() -- 1.2
The following methods have been around since JDK 1.1, so we do not need to wrap them as we will never support JDK 1.0 -- let it rest in piece(s):
- getTcpNoDelay() / setTcpNoDelay()
- getSoTimeout() / setSoTimeout()
- Version:
- $Header: /cvsroot/remotetea/remotetea/src/org/acplt/oncrpc/OncRpcUdpSocketHelper.java,v 1.3 2007/05/29 19:45:46 haraldalbrecht Exp $
- Author:
- Harald Albrecht
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.Method
methodGetReceiveBufferSize
Method Socket.getReceiveBufferSize ornull
if not available in the class library of a particular JRE.private java.lang.reflect.Method
methodGetSendBufferSize
Method Socket.getSendBufferSize ornull
if not available in the class library of a particular JRE.private java.lang.reflect.Method
methodSetReceiveBufferSize
Method Socket.setReceiverBufferSize ornull
if not available in the class library of a particular JRE.private java.lang.reflect.Method
methodSetSendBufferSize
Method Socket.setSendBufferSize ornull
if not available in the class library of a particular JRE.private java.net.DatagramSocket
socket
The datagram socket for which we have to help out with some missing methods.
-
Constructor Summary
Constructors Constructor Description OncRpcUdpSocketHelper(java.net.DatagramSocket socket)
Creates a datagram socket and binds it to an arbitrary available port on the local host machine.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getReceiveBufferSize()
Get size of receive buffer for this socket.int
getSendBufferSize()
Get size of send buffer for this socket.protected void
queryMethods()
Looks up methods of class DatagramSocket whether they are supported by the class libraries of the JRE we are currently executing on.void
setReceiveBufferSize(int size)
Sets the socket's receive buffer size as a hint to the underlying transport layer to use appropriately sized I/O buffers.void
setSendBufferSize(int size)
Sets the socket's send buffer size as a hint to the underlying transport layer to use appropriately sized I/O buffers.
-
-
-
Field Detail
-
socket
private java.net.DatagramSocket socket
The datagram socket for which we have to help out with some missing methods.
-
methodSetSendBufferSize
private java.lang.reflect.Method methodSetSendBufferSize
Method Socket.setSendBufferSize ornull
if not available in the class library of a particular JRE.
-
methodSetReceiveBufferSize
private java.lang.reflect.Method methodSetReceiveBufferSize
Method Socket.setReceiverBufferSize ornull
if not available in the class library of a particular JRE.
-
methodGetSendBufferSize
private java.lang.reflect.Method methodGetSendBufferSize
Method Socket.getSendBufferSize ornull
if not available in the class library of a particular JRE.
-
methodGetReceiveBufferSize
private java.lang.reflect.Method methodGetReceiveBufferSize
Method Socket.getReceiveBufferSize ornull
if not available in the class library of a particular JRE.
-
-
Method Detail
-
setSendBufferSize
public void setSendBufferSize(int size) throws java.net.SocketException
Sets the socket's send buffer size as a hint to the underlying transport layer to use appropriately sized I/O buffers. If the class libraries of the underlying JRE do not support setting the send buffer size, this is silently ignored.- Parameters:
size
- The size to which to set the send buffer size. This value must be greater than 0.- Throws:
java.net.SocketException
- if the socket's send buffer size could not be set, because the transport layer decided against accepting the new buffer size.java.lang.IllegalArgumentException
- ifsize
is 0 or negative.
-
getSendBufferSize
public int getSendBufferSize() throws java.net.SocketException
Get size of send buffer for this socket.- Returns:
- Size of send buffer.
- Throws:
java.net.SocketException
- If the transport layer could not be queried for the size of this socket's send buffer.
-
setReceiveBufferSize
public void setReceiveBufferSize(int size) throws java.net.SocketException
Sets the socket's receive buffer size as a hint to the underlying transport layer to use appropriately sized I/O buffers. If the class libraries of the underlying JRE do not support setting the receive buffer size, this is silently ignored.- Parameters:
size
- The size to which to set the receive buffer size. This value must be greater than 0.- Throws:
java.net.SocketException
- if the socket's receive buffer size could not be set, because the transport layer decided against accepting the new buffer size.java.lang.IllegalArgumentException
- ifsize
is 0 or negative.
-
getReceiveBufferSize
public int getReceiveBufferSize() throws java.net.SocketException
Get size of receive buffer for this socket.- Returns:
- Size of receive buffer.
- Throws:
java.net.SocketException
- If the transport layer could not be queried for the size of this socket's receive buffer.
-
queryMethods
protected void queryMethods()
Looks up methods of class DatagramSocket whether they are supported by the class libraries of the JRE we are currently executing on.
-
-