[multiple changes]
1999-05-26 Bryce McKinlay <bryce@albatross.co.nz> * java/net/DatagramSocket.java (getSoTimeout): Verify class type. * java/net/DatagramSocketImpl.java (getOption): Made abstract. (setOption): Made abstract. * java/net/PlainDatagramSocketImpl.java: Mirror SocketOptions fields to avoid cpp conflicts in native code. * java/net/PlainSocketImpl.java: Mirror SocketOptions fields to avoid cpp conflicts in native code. * java/net/ServerSocket.java (toString): Prepended "ServerSocket". * java/net/Socket.java (getLocalAddress): Implemented. (setTcpNoDelay): Implemented. (getTcpNoDelay): Implemented. (setSoLinger): Implemented. (getSoLinger): Implemented. (getSoTimeout): Verify class type. (setSendBufferSize): Implemented. (getSendBufferSize): Implemented. (setReceiveBufferSize): Implemented. (getReceiveBufferSize): Implemented. (toString): Prepended "Socket". * java/net/SocketImpl.java (toString): Rewritten. (getOption): Made abstract. (setOption): Made abstract. * java/net/natPlainSocketImpl.cc (connect): Set localport properly. (setOption): Implemented. (getOption): Implemented. 1999-05-26 Warren Levy <warrenl@cygnus.com> * java/net/DatagramSocket.java (DatagramSocket): Get local host address when null. Set SO_REUSEADDR for multicasts. (getSoTimeout): Implemented. (setSoTimeout): Implemented. * java/net/DatagramSocketImpl.java: Implement SocketOptions interface. * java/net/MulticastSocket.java (getInterface): Implemented. (setInterface): Implemented. (setTimeToLive): Check for invalid ttl. (joinGroup): Verify multicast address and security. (leaveGroup): Verify multicast address and security. (send): Implemented. * java/net/PlainDatagramSocketImpl.java (timeout): Added. (iface): Added. (ttl): Added. (setOption): Added. (getOption): Added. (mcastGrp): Added. (getTTL): Implemented as non-native. (setTTL): ditto. (join): ditto. (leave): ditto. * java/net/ServerSocket.java (setSoTimeout): Implemented. (getSoTimeout): Implemented. (setSocketFactory): Made synchronized. * java/net/Socket.java (setSoTimeout): Implemented. (getSoTimeout): Implemented. (close): Made synchronized. (setSocketImplFactory): Made synchronized. * java/net/SocketImpl.java: Implement SocketOptions interface. * java/net/natInetAddress.cc: Corrected module name at top of file. * java/net/natPlainDatagramSocketImpl.cc (McastReq): Added union. (bind): Added FIXME. (peek): Implemented. (setTTL): Removed. (getTTL): Removed. (join): Removed. (leave): Removed. (mcastGrp): Added. (setOption): Implemented for SO_REUSEADDR. (getOption): Implemented for SO_REUSEADDR. From-SVN: r27184
This commit is contained in:
parent
de4abb91d1
commit
f2ed9e9656
13 changed files with 608 additions and 88 deletions
|
@ -14,8 +14,7 @@ details. */
|
|||
*/
|
||||
|
||||
/** Written using on-line Java Platform 1.2 API Specification.
|
||||
* Status: I believe all methods are implemented, but many
|
||||
* of them just throw an exception.
|
||||
* Status: I believe all methods are implemented.
|
||||
*/
|
||||
|
||||
package java.net;
|
||||
|
@ -116,9 +115,18 @@ public class Socket
|
|||
|
||||
public InetAddress getLocalAddress ()
|
||||
{
|
||||
// There doesn't seem to be any way to implement this
|
||||
// using a (generic) SocketImpl ... What am I missing?
|
||||
throw new InternalError("Socket.getLocalAddres not implemented");
|
||||
InetAddress localAddress;
|
||||
try
|
||||
{
|
||||
localAddress = (InetAddress)impl.getOption(SocketOptions.SO_BINDADDR);
|
||||
}
|
||||
catch (SocketException x)
|
||||
{
|
||||
// (hopefully) shouldn't happen
|
||||
System.err.println(x);
|
||||
throw new java.lang.InternalError("Error in PlainSocketImpl.getOption");
|
||||
}
|
||||
return localAddress;
|
||||
}
|
||||
|
||||
public int getPort ()
|
||||
|
@ -143,65 +151,98 @@ public class Socket
|
|||
|
||||
public void setTcpNoDelay (boolean on) throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.setTcpNoDelay not implemented");
|
||||
impl.setOption( SocketOptions.TCP_NODELAY, new Boolean(on) );
|
||||
}
|
||||
|
||||
public boolean getTcpNoDelay() throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.getTcpNoDelay not implemented");
|
||||
Boolean bool = (Boolean)impl.getOption( SocketOptions.TCP_NODELAY );
|
||||
return bool.booleanValue();
|
||||
}
|
||||
|
||||
public void setSoLinger(boolean on, int linger) throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.setSoLinger not implemented");
|
||||
if ( on && (linger >= 0) )
|
||||
{
|
||||
if (linger > 65535)
|
||||
linger = 65535;
|
||||
impl.setOption( SocketOptions.SO_LINGER, new Integer(linger) );
|
||||
}
|
||||
else if ( on && (linger < 0) )
|
||||
throw new IllegalArgumentException("SO_LINGER must be >= 0");
|
||||
else
|
||||
impl.setOption( SocketOptions.SO_LINGER, new Boolean(false) );
|
||||
}
|
||||
|
||||
public int getSoLinger() throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.getSoLinger not implemented");
|
||||
Object linger = impl.getOption(SocketOptions.SO_LINGER);
|
||||
if (linger instanceof Integer)
|
||||
return ((Integer)linger).intValue();
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
public void setSoTimeout (int timeout) throws SocketException
|
||||
public synchronized void setSoTimeout (int timeout) throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.setSoTimeout not implemented");
|
||||
if (timeout < 0)
|
||||
throw new IllegalArgumentException("Invalid timeout: " + timeout);
|
||||
|
||||
impl.setOption(SocketOptions.SO_TIMEOUT, new Integer(timeout));
|
||||
}
|
||||
|
||||
public int getSoTimeout () throws SocketException
|
||||
public synchronized int getSoTimeout () throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.getSoTimeout not implemented");
|
||||
Object timeout = impl.getOption(SocketOptions.SO_TIMEOUT);
|
||||
if (timeout instanceof Integer)
|
||||
return ((Integer)timeout).intValue();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
// JDK1.2
|
||||
public void setSendBufferSize (int size) throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.setSendBufferSize not implemented");
|
||||
if (size <= 0)
|
||||
throw new IllegalArgumentException("Invalid buffer size: " + size);
|
||||
|
||||
impl.setOption(SocketOptions.SO_SNDBUF, new Integer(size));
|
||||
}
|
||||
|
||||
// JDK1.2
|
||||
public int getSendBufferSize () throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.getSendBufferSize not implemented");
|
||||
Integer buf = (Integer)impl.getOption(SocketOptions.SO_SNDBUF);
|
||||
return buf.intValue();
|
||||
}
|
||||
|
||||
// JDK1.2
|
||||
public void setReceiveBufferSize (int size) throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.setReceiveBufferSize not implemented");
|
||||
if (size <= 0)
|
||||
throw new IllegalArgumentException("Invalid buffer size: " + size);
|
||||
|
||||
impl.setOption(SocketOptions.SO_RCVBUF, new Integer(size));
|
||||
}
|
||||
|
||||
// JDK1.2
|
||||
public int getReceiveBufferSize () throws SocketException
|
||||
{
|
||||
throw new InternalError("Socket.getReceiveBufferSize not implemented");
|
||||
Integer buf = (Integer)impl.getOption(SocketOptions.SO_RCVBUF);
|
||||
return buf.intValue();
|
||||
}
|
||||
|
||||
public void close () throws IOException
|
||||
public synchronized void close () throws IOException
|
||||
{
|
||||
impl.close();
|
||||
}
|
||||
|
||||
public String toString ()
|
||||
{
|
||||
return impl.toString();
|
||||
return "Socket" + impl.toString();
|
||||
}
|
||||
|
||||
public static void setSocketImplFactory (SocketImplFactory fac)
|
||||
public static synchronized void setSocketImplFactory (SocketImplFactory fac)
|
||||
throws IOException
|
||||
{
|
||||
factory = fac;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue