aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2002-09-12 06:35:51 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2002-09-12 06:35:51 +0000
commitd0c97db6b3b562dfdd2be66bd36d4626e05b68da (patch)
tree94264e3f551da9a61cee0a8bc5b962de94b3c3f9 /libjava
parent35aff10b0f617c6f4dab622ec0d1700e270f16a0 (diff)
downloadgcc-d0c97db6b3b562dfdd2be66bd36d4626e05b68da.zip
gcc-d0c97db6b3b562dfdd2be66bd36d4626e05b68da.tar.gz
gcc-d0c97db6b3b562dfdd2be66bd36d4626e05b68da.tar.bz2
2002-09-12 Michael Koch <konqueror@gmx.de>
* java/net/DatagramSocketImpl.jav (peekData): New method. * java/net/PlainDatagramSocketImpl.java (peekData): New method. * java/net/natPlainDatagramSocketImpl.cc (peekData): New method. * java/net/URLConnection (getPermission): New method. (addRequestProperty): New method. (getRequestProperties): New method. (guessContentTypeFromStream): New method, not really implemented. (URLConnection): Added/updated documentation. (connect): Added/updated documentation. (getURL): Added/updated documentation. (getContentLength): Added/updated documentation. (getContentType: Added/updated documentation. (getContentEncoding): Added/updated documentation. (getExpiration): Added/updated documentation. (getDate): Added/updated documentation. (getLastModified): Added/updated documentation. (getHeaderField): Added/updated documentation. (getHeaderFields): Added/updated documentation. (getHeaderFieldInt): Added/updated documentation. (getHeaderFieldDate): Added/updated documentation. (getHeaderFieldKey): Added/updated documentation. (getContent): Added/updated documentation. (getInputStream): Added/updated documentation. (getOutputStream): Added/updated documentation. (toString): Added/updated documentation. (setDoInput): Added/updated documentation. (getDoInput): Added/updated documentation. (setDoOutput): Added/updated documentation. (getDoOutput): Added/updated documentation. (setAllowUserInteraction): Added/updated documentation. (getAllowUserInteraction): Added/updated documentation. (setDefaultAllowUserInteraction): Added/updated documentation. (getDefaultAllowUserInteraction): Added/updated documentation. (setUseCaches): Added/updated documentation. (getUseCaches): Added/updated documentation. (setIfModifiedSince): Added/updated documentation. (getIfModifiedSince): Added/updated documentation. (getDefaultUseCaches): Added/updated documentation. (setDefaultUseCaches): Added/updated documentation. (setRequestProperty): Added/updated documentation. (getRequestProperty): Added/updated documentation. (setDefaultRequestProperty): Added/updated documentation. (getDefaultRequestProperty): Added/updated documentation. (setContentHandlerFactory): Added/updated documentation. From-SVN: r57049
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog54
-rw-r--r--libjava/java/net/DatagramSocketImpl.java22
-rw-r--r--libjava/java/net/PlainDatagramSocketImpl.java1
-rw-r--r--libjava/java/net/URLConnection.java278
-rw-r--r--libjava/java/net/natPlainDatagramSocketImpl.cc83
5 files changed, 408 insertions, 30 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 96476e7..cf111d0 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,57 @@
+2002-09-12 Michael Koch <konqueror@gmx.de>
+
+ * java/net/DatagramSocketImpl.jav
+ (peekData): New method.
+ * java/net/PlainDatagramSocketImpl.java
+ (peekData): New method.
+ * java/net/natPlainDatagramSocketImpl.cc
+ (peekData): New method.
+ * java/net/URLConnection
+ (getPermission): New method.
+ (addRequestProperty): New method.
+ (getRequestProperties): New method.
+ (guessContentTypeFromStream): New method, not really implemented.
+ (URLConnection): Added/updated documentation.
+ (connect): Added/updated documentation.
+ (getURL): Added/updated documentation.
+ (getContentLength): Added/updated documentation.
+ (getContentType: Added/updated documentation.
+ (getContentEncoding): Added/updated documentation.
+ (getExpiration): Added/updated documentation.
+ (getDate): Added/updated documentation.
+ (getLastModified): Added/updated documentation.
+ (getHeaderField): Added/updated documentation.
+ (getHeaderFields): Added/updated documentation.
+ (getHeaderFieldInt): Added/updated documentation.
+ (getHeaderFieldDate): Added/updated documentation.
+ (getHeaderFieldKey): Added/updated documentation.
+ (getContent): Added/updated documentation.
+ (getInputStream): Added/updated documentation.
+ (getOutputStream): Added/updated documentation.
+ (toString): Added/updated documentation.
+ (setDoInput): Added/updated documentation.
+ (getDoInput): Added/updated documentation.
+ (setDoOutput): Added/updated documentation.
+ (getDoOutput): Added/updated documentation.
+ (setAllowUserInteraction): Added/updated documentation.
+ (getAllowUserInteraction): Added/updated documentation.
+ (setDefaultAllowUserInteraction): Added/updated documentation.
+ (getDefaultAllowUserInteraction): Added/updated documentation.
+ (setUseCaches): Added/updated documentation.
+ (getUseCaches): Added/updated documentation.
+ (setIfModifiedSince): Added/updated documentation.
+ (getIfModifiedSince): Added/updated documentation.
+ (getDefaultUseCaches): Added/updated documentation.
+ (setDefaultUseCaches): Added/updated documentation.
+ (setRequestProperty): Added/updated documentation.
+ (getRequestProperty): Added/updated documentation.
+ (setDefaultRequestProperty): Added/updated documentation.
+ (getDefaultRequestProperty): Added/updated documentation.
+ (setContentHandlerFactory): Added/updated documentation.
+ (guessContentTypeFromName): Added/updated documentation.
+ (getFileNameMap): Added/updated documentation.
+ (setFileNameMap): Added/updated documentation.
+
2002-09-11 Michael Koch <konqueror@gmx.de>
* java/net/Socket.java
diff --git a/libjava/java/net/DatagramSocketImpl.java b/libjava/java/net/DatagramSocketImpl.java
index 260088d..6f10a78 100644
--- a/libjava/java/net/DatagramSocketImpl.java
+++ b/libjava/java/net/DatagramSocketImpl.java
@@ -112,6 +112,20 @@ public abstract class DatagramSocketImpl implements SocketOptions
protected abstract int peek(InetAddress i) throws IOException;
/**
+ * Takes a peek at the next packet received. This packet is not consumed.
+ * With the next peekData/receive operation this packet will be read again.
+ *
+ * @param p The DatagramPacket to fill in with the data sent.
+ *
+ * @return The port number of the sender of the packet.
+ *
+ * @exception IOException If an error occurs
+ *
+ * @since 1.4
+ */
+ protected abstract int peekData (DatagramPacket p) throws IOException;
+
+ /**
* Transmits the specified packet of data to the network. The destination
* host and port should be encoded in the packet.
*
@@ -208,7 +222,7 @@ public abstract class DatagramSocketImpl implements SocketOptions
* Sets the specified option on a socket to the passed in object. For
* options that take an integer argument, the passed in object is an
* <code>Integer</code>. For options that are set to on or off, the
- * value passed will be a <code>Boolean</code>. The <code>option_id</code>
+ * value passed will be a <code>Boolean</code>. The <code>option_id</code>
* parameter is one of the defined constants in the superinterface.
*
* @param option_id The identifier of the option
@@ -221,9 +235,9 @@ public abstract class DatagramSocketImpl implements SocketOptions
throws SocketException;
/**
- * Returns the current setting of the specified option. The
- * <code>Object</code> returned will be an <code>Integer</code> for options
- * that have integer values. For options that are set to on or off, a
+ * Returns the current setting of the specified option. The
+ * <code>Object</code> returned will be an <code>Integer</code> for options
+ * that have integer values. For options that are set to on or off, a
* <code>Boolean</code> will be returned. The <code>option_id</code>
* is one of the defined constants in the superinterface.
*
diff --git a/libjava/java/net/PlainDatagramSocketImpl.java b/libjava/java/net/PlainDatagramSocketImpl.java
index 8f3cda2..3a8db03 100644
--- a/libjava/java/net/PlainDatagramSocketImpl.java
+++ b/libjava/java/net/PlainDatagramSocketImpl.java
@@ -65,6 +65,7 @@ class PlainDatagramSocketImpl extends DatagramSocketImpl
throws SocketException;
protected native void create() throws SocketException;
protected native int peek(InetAddress i) throws IOException;
+ protected native int peekData (DatagramPacket dp) throws IOException;
protected native void setTimeToLive(int ttl) throws IOException;
protected native int getTimeToLive() throws IOException;
protected native void send(DatagramPacket p) throws IOException;
diff --git a/libjava/java/net/URLConnection.java b/libjava/java/net/URLConnection.java
index b3bebba..f11f1b8 100644
--- a/libjava/java/net/URLConnection.java
+++ b/libjava/java/net/URLConnection.java
@@ -19,6 +19,8 @@ import java.util.Locale;
import java.util.Hashtable;
import java.util.Map;
import java.util.StringTokenizer;
+import java.security.Permission;
+import java.security.AllPermission;
import gnu.gcj.io.MimeTypes;
/**
@@ -52,6 +54,14 @@ public abstract class URLConnection
private static SimpleDateFormat dateFormat1, dateFormat2, dateFormat3;
private static boolean dateformats_initialized = false;
+ /**
+ * Creates a URL connection to a given URL. A real connection is not made.
+ * Use #connect to do this.
+ *
+ * @param url The Object to create the URL connection to
+ *
+ * @see URLConnection:connect
+ */
protected URLConnection(URL url)
{
this.url = url;
@@ -59,49 +69,84 @@ public abstract class URLConnection
useCaches = defaultUseCaches;
}
+ /**
+ * Creates a real connection to the object references by the URL given
+ * to the constructor
+ */
public abstract void connect() throws IOException;
+ /**
+ * Returns ths URL to the object.
+ */
public URL getURL()
{
return url;
}
+ /**
+ * Returns the value of the content-length header field
+ */
public int getContentLength()
{
return getHeaderFieldInt("content-length", -1);
}
+ /**
+ * Returns the value of the content-type header field
+ */
public String getContentType()
{
return getHeaderField("content-type");
}
+ /**
+ * Returns the value of the content-encoding header field
+ */
public String getContentEncoding()
{
return getHeaderField("content-encoding");
}
+ /**
+ * Returns the value of the expires header field
+ */
public long getExpiration()
{
return getHeaderFieldDate("expiration", 0L);
}
+ /**
+ * Returns the value of the date header field
+ */
public long getDate()
{
return getHeaderFieldDate("date", 0L);
}
+ /**
+ * Returns the value of the last-modified header field
+ */
public long getLastModified()
{
return getHeaderFieldDate("last-modified", 0L);
}
- public String getHeaderField(int n)
+ /**
+ * Returns the value of the n-th header field
+ *
+ * @param num The number of the header field
+ */
+ public String getHeaderField(int num)
{
// Subclasses for specific protocols override this.
return null;
}
+ /**
+ * Returns the value of the header filed specified by name
+ *
+ * @param name The name of the header field
+ */
public String getHeaderField(String name)
{
// Subclasses for specific protocols override this.
@@ -109,6 +154,8 @@ public abstract class URLConnection
}
/**
+ * Returns a map of all sent header fields
+ *
* @since 1.4
*/
public Map getHeaderFields()
@@ -117,6 +164,15 @@ public abstract class URLConnection
return null;
}
+ /**
+ * Returns the value of the header filed name as int.
+ *
+ * @param name The name of the header field
+ * @param val The default value
+ *
+ * @return Returns the value of the header filed or the default value
+ * if the field is missing or malformed
+ */
public int getHeaderFieldInt(String name, int val)
{
String str = getHeaderField(name);
@@ -132,6 +188,16 @@ public abstract class URLConnection
return val;
}
+ /**
+ * Returns the value of a header field parsed as date. The result is then
+ * number of milliseconds since January 1st, 1970 GMT.
+ *
+ * @param name The name of the header field
+ * @param val The dafault date
+ *
+ * @return Returns the date value of the header filed or the default value
+ * if the field is missing or malformed
+ */
public long getHeaderFieldDate(String name, long val)
{
if (! dateformats_initialized)
@@ -150,12 +216,20 @@ public abstract class URLConnection
return val;
}
- public String getHeaderFieldKey(int n)
+ /**
+ * Returns the key of the n-th header field
+ *
+ * @param num The number of the header field
+ */
+ public String getHeaderFieldKey(int num)
{
// Subclasses for specific protocols override this.
return null;
}
+ /**
+ * Retrieves the content of this URLConnection
+ */
public Object getContent() throws IOException
{
// FIXME: Doc indicates that other criteria should be applied as
@@ -170,12 +244,20 @@ public abstract class URLConnection
return contentHandler.getContent(this);
}
-// TODO12: public Permission getPermission() throws IOException
-// {
-// // Subclasses may override this.
-// return java.security.AllPermission;
-// }
+ /**
+ * Returns a permission object representing the permission necessary to make
+ * the connection represented by this object. This method returns null if no
+ * permission is required to make the connection.
+ */
+ public Permission getPermission() throws IOException
+ {
+ // Subclasses may override this.
+ return new java.security.AllPermission();
+ }
+ /**
+ * Returns the input stream of the URL connection
+ */
public InputStream getInputStream() throws IOException
{
// Subclasses for specific protocols override this.
@@ -183,6 +265,9 @@ public abstract class URLConnection
" does not support input.");
}
+ /**
+ * Returns the output stream of the URL connection
+ */
public OutputStream getOutputStream() throws IOException
{
// Subclasses for specific protocols override this.
@@ -190,11 +275,19 @@ public abstract class URLConnection
" does not support output.");
}
+ /**
+ * Returns a string representation of the URL connection object
+ */
public String toString()
{
return this.getClass().getName() + ":" + url.toString();
}
+ /**
+ * Sets tha value of the doInput field.
+ *
+ * @param doinput The new value of the doInput field
+ */
public void setDoInput(boolean doinput)
{
if (connected)
@@ -203,11 +296,19 @@ public abstract class URLConnection
doInput = doinput;
}
+ /**
+ * Returns the current value of the doInput field
+ */
public boolean getDoInput()
{
return doInput;
}
+ /**
+ * Sets the value of the doOutput field
+ *
+ * @param dooutput The new value of the doOutput field
+ */
public void setDoOutput(boolean dooutput)
{
if (connected)
@@ -216,35 +317,58 @@ public abstract class URLConnection
doOutput = dooutput;
}
+ /**
+ * Returns the current value of the doOutput field
+ */
public boolean getDoOutput()
{
return doOutput;
}
- public void setAllowUserInteraction(boolean allowuserinteraction)
+ /**
+ * Sets a new value to the allowUserInteraction field
+ *
+ * @param allowed The new value
+ */
+ public void setAllowUserInteraction(boolean allowed)
{
if (connected)
throw new IllegalAccessError("Already connected");
- allowUserInteraction = allowuserinteraction;
+ allowUserInteraction = allowed;
}
+ /**
+ * Returns the current value of the allowUserInteraction field
+ */
public boolean getAllowUserInteraction()
{
return allowUserInteraction;
}
- public static void
- setDefaultAllowUserInteraction(boolean defaultallowuserinteraction)
+ /**
+ * Sets the default value if the allowUserInteraction field
+ *
+ * @param allowed The new default value
+ */
+ public static void setDefaultAllowUserInteraction(boolean allowed)
{
- defaultAllowUserInteraction = defaultallowuserinteraction;
+ defaultAllowUserInteraction = allowed;
}
+ /**
+ * Returns the default value of the allowUserInteraction field
+ */
public static boolean getDefaultAllowUserInteraction()
{
return defaultAllowUserInteraction;
}
+ /**
+ * Sets a new value to the useCaches field
+ *
+ * @param usecaches The new value
+ */
public void setUseCaches(boolean usecaches)
{
if (connected)
@@ -253,11 +377,20 @@ public abstract class URLConnection
useCaches = usecaches;
}
+ /**
+ * The current value of the useCaches field
+ */
public boolean getUseCaches()
{
return useCaches;
}
+ /**
+ * Sets the value of the ifModifiedSince field
+ *
+ * @param ifmodifiedsince The new value in milliseconds
+ * since January 1, 1970 GMT
+ */
public void setIfModifiedSince(long ifmodifiedsince)
{
if (connected)
@@ -266,27 +399,77 @@ public abstract class URLConnection
ifModifiedSince = ifmodifiedsince;
}
+ /**
+ * Returns the current value of the ifModifiedSince field
+ */
public long getIfModifiedSince()
{
return ifModifiedSince;
}
+ /**
+ * Returns the default value of the useCaches field
+ */
public boolean getDefaultUseCaches()
{
return defaultUseCaches;
}
+ /**
+ * Sets the default value of the useCaches field
+ *
+ * @param defaultusecaches The new default value
+ */
public void setDefaultUseCaches(boolean defaultusecaches)
{
defaultUseCaches = defaultusecaches;
}
+ /**
+ * Sets a property specified by key to value.
+ *
+ * @param key Key of the property to set
+ * @param value Value of the Property to set
+ *
+ * @see URLConnection:getRequestProperty(String key)
+ * @see URLConnection:addRequestProperty/String key, String value)
+ */
public void setRequestProperty(String key, String value)
{
// Do nothing unless overridden by subclasses that support setting
// header fields in the request.
}
+ /**
+ * Sets a property specified by key to value. If the property key already
+ * is assigned to a value it does nothing.
+ *
+ * @param key Key of the property to add
+ * @param value Value of the Property to add
+ *
+ * @see URLConnection:getRequestProperty(String key)
+ * @see URLConnection:setRequestProperty(String key, String value)
+ *
+ * @since 1.4
+ */
+ public void addRequestProperty(String key, String value)
+ {
+ if (getRequestProperty (key) == null)
+ {
+ setRequestProperty (key, value);
+ }
+ }
+
+ /**
+ * Returns a property value specified by key.
+ *
+ * @param key Key of the property to return
+ *
+ * @see URLConnection:setRequestProperty(String key, String value)
+ * @see URLConnection:addRequestProperty(String key, String value)
+ *
+ * @return Value of the property.
+ */
public String getRequestProperty(String key)
{
// Overridden by subclasses that support reading header fields from the
@@ -294,6 +477,28 @@ public abstract class URLConnection
return null;
}
+ /**
+ * Returns a map that contains all properties of the request
+ *
+ * @return The map of properties
+ */
+ public Map getRequestProperties()
+ {
+ // Overridden by subclasses that support reading header fields from the
+ // request.
+ return null;
+ }
+
+ /**
+ * Defines a default request property
+ *
+ * @param key The key of the property
+ * @param value The value of the property
+ *
+ * @deprecated 1.3 The method setRequestProperty should be used instead
+ *
+ * @see URLConnection:setRequestProperty
+ */
public static void setDefaultRequestProperty(String key, String value)
{
// Do nothing unless overridden by subclasses that support setting
@@ -301,7 +506,15 @@ public abstract class URLConnection
}
/**
- * @deprecated 1.3
+ * Returns the value of a default request property
+ *
+ * @param key The key of the default property
+ *
+ * @return The value of the default property or null if not available
+ *
+ * @deprecated 1.3 The method getRequestProperty should be used instead
+ *
+ * @see URLConnection:getRequestProperty
*/
public static String getDefaultRequestProperty(String key)
{
@@ -309,6 +522,11 @@ public abstract class URLConnection
return null;
}
+ /**
+ * Sets a ContentHandlerFactory
+ *
+ * @param fac The ContentHandlerFactory
+ */
public static void setContentHandlerFactory(ContentHandlerFactory fac)
{
if (factory != null)
@@ -322,6 +540,12 @@ public abstract class URLConnection
factory = fac;
}
+ /**
+ * Tries to determine the content type of an object, based on the
+ * specified file name
+ *
+ * @param fname The filename to guess the content type from
+ */
protected static String guessContentTypeFromName(String fname)
{
int dot = fname.lastIndexOf (".");
@@ -342,14 +566,26 @@ public abstract class URLConnection
return(type);
}
-// TODO: public static String guessContentTypeFromStream(InputStream is)
-// throws IOException
-// {
-// }
-
-// TODO12: protected void parseURL(URL u, String spec, int start, int limit)
+ /**
+ * Tries to guess the content type of an object, based on the characters
+ * at the beginning of then input stream
+ *
+ * @param is The input stream to guess from
+ *
+ * @exception IOException If an error occurs
+ */
+ public static String guessContentTypeFromStream(InputStream is)
+ throws IOException
+ {
+ is.mark(1024);
+ // FIXME: Implement this. Use system mimetype informations (like "file").
+ is.reset();
+ return null;
+ }
/**
+ * Returns a filename map (a mimetable)
+ *
* @since 1.2
*/
public static FileNameMap getFileNameMap()
@@ -358,6 +594,10 @@ public abstract class URLConnection
}
/**
+ * Sets a FileNameMap
+ *
+ * @param map The new FileNameMap
+ *
* @since 1.2
*/
public static void setFileNameMap(FileNameMap map)
diff --git a/libjava/java/net/natPlainDatagramSocketImpl.cc b/libjava/java/net/natPlainDatagramSocketImpl.cc
index 1c63163..6a29fb3 100644
--- a/libjava/java/net/natPlainDatagramSocketImpl.cc
+++ b/libjava/java/net/natPlainDatagramSocketImpl.cc
@@ -93,6 +93,13 @@ java::net::PlainDatagramSocketImpl::peek (java::net::InetAddress *)
JvNewStringLatin1 ("DatagramSocketImpl.peek: unimplemented"));
}
+jint
+java::net::PlainDatagramSocketImpl::peekData(java::net::DatagramPacket *)
+{
+ throw new java::io::IOException (
+ JvNewStringLatin1 ("DatagramSocketImpl.peekData: unimplemented"));
+}
+
void
java::net::PlainDatagramSocketImpl::close ()
{
@@ -295,6 +302,68 @@ java::net::PlainDatagramSocketImpl::peek (java::net::InetAddress *i)
throw new java::io::IOException (JvNewStringUTF (strerr));
}
+jint
+java::net::PlainDatagramSocketImpl::peekData(java::net::DatagramPacket *p)
+{
+ // FIXME: Deal with Multicast and if the socket is connected.
+ union SockAddr u;
+ socklen_t addrlen = sizeof(u);
+ jbyte *dbytes = elements (p->getData());
+ ssize_t retlen = 0;
+
+// FIXME: implement timeout support for Win32
+#ifndef WIN32
+ // Do timeouts via select since SO_RCVTIMEO is not always available.
+ if (timeout > 0 && fnum >= 0 && fnum < FD_SETSIZE)
+ {
+ fd_set rset;
+ struct timeval tv;
+ FD_ZERO(&rset);
+ FD_SET(fnum, &rset);
+ tv.tv_sec = timeout / 1000;
+ tv.tv_usec = (timeout % 1000) * 1000;
+ int retval;
+ if ((retval = _Jv_select (fnum + 1, &rset, NULL, NULL, &tv)) < 0)
+ goto error;
+ else if (retval == 0)
+ throw new java::io::InterruptedIOException ();
+ }
+#endif /* WIN32 */
+
+ retlen =
+ ::recvfrom (fnum, (char *) dbytes, p->getLength(), MSG_PEEK, (sockaddr*) &u,
+ &addrlen);
+ if (retlen < 0)
+ goto error;
+ // FIXME: Deal with Multicast addressing and if the socket is connected.
+ jbyteArray raddr;
+ jint rport;
+ if (u.address.sin_family == AF_INET)
+ {
+ raddr = JvNewByteArray (4);
+ memcpy (elements (raddr), &u.address.sin_addr, 4);
+ rport = ntohs (u.address.sin_port);
+ }
+#ifdef HAVE_INET6
+ else if (u.address.sin_family == AF_INET6)
+ {
+ raddr = JvNewByteArray (16);
+ memcpy (elements (raddr), &u.address6.sin6_addr, 16);
+ rport = ntohs (u.address6.sin6_port);
+ }
+#endif
+ else
+ throw new java::net::SocketException (JvNewStringUTF ("invalid family"));
+
+ p->setAddress (new InetAddress (raddr, NULL));
+ p->setPort (rport);
+ p->setLength ((jint) retlen);
+ return rport;
+ error:
+ char* strerr = strerror (errno);
+ throw new java::io::IOException (JvNewStringUTF (strerr));
+}
+
// Close(shutdown) the socket.
void
java::net::PlainDatagramSocketImpl::close ()
@@ -529,12 +598,12 @@ java::net::PlainDatagramSocketImpl::setOption (jint optID,
throw new java::net::SocketException (
JvNewStringUTF ("SO_KEEPALIVE not valid for UDP"));
return;
-
+
case _Jv_SO_BROADCAST_ :
if (::setsockopt (fnum, SOL_SOCKET, SO_BROADCAST, (char *) &val,
val_len) != 0)
goto error;
- break;
+ break;
case _Jv_SO_OOBINLINE_ :
throw new java::net::SocketException (
@@ -620,7 +689,7 @@ java::net::PlainDatagramSocketImpl::setOption (jint optID,
val_len) != 0)
goto error;
return;
-
+
case _Jv_SO_TIMEOUT_ :
timeout = val;
return;
@@ -655,7 +724,7 @@ java::net::PlainDatagramSocketImpl::getOption (jint optID)
throw new java::net::SocketException (
JvNewStringUTF ("SO_KEEPALIVE not valid for UDP"));
break;
-
+
case _Jv_SO_BROADCAST_ :
if (::getsockopt (fnum, SOL_SOCKET, SO_BROADCAST, (char *) &val,
&val_len) != 0)
@@ -665,8 +734,8 @@ java::net::PlainDatagramSocketImpl::getOption (jint optID)
case _Jv_SO_OOBINLINE_ :
throw new java::net::SocketException (
JvNewStringUTF ("SO_OOBINLINE not valid for UDP"));
- break;
-
+ break;
+
case _Jv_SO_RCVBUF_ :
case _Jv_SO_SNDBUF_ :
#if defined(SO_SNDBUF) && defined(SO_RCVBUF)
@@ -756,7 +825,7 @@ java::net::PlainDatagramSocketImpl::getOption (jint optID)
&val_len) != 0)
goto error;
return new java::lang::Integer (val);
-
+
default :
errno = ENOPROTOOPT;
}