From: Michael Koch Date: Wed, 17 Mar 2004 08:10:28 +0000 (+0000) Subject: 2004-03-17 Michael Koch X-Git-Tag: releases/gcc-4.0.0~9349 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3e368284acf08cd61daf74eb81347e882f60f106;p=thirdparty%2Fgcc.git 2004-03-17 Michael Koch * gnu/java/net/PlainDatagramSocketImpl.java (RECEIVE_LOCK): New member field. (SEND_LOCK): New member field. (send0): New method. (send): Synchronize on SEND_LOCK. (receive0): New method. (receive): Synchronize on RECEIVE_LOCK. * gnu/java/net/natPlainDatagramSocketImplNoNet.cc, gnu/java/net/natPlainDatagramSocketImplPosix.cc, gnu/java/net/natPlainDatagramSocketImplWin32.cc (send0): Renamed from send. (receive0): Renamed from receive. From-SVN: r79579 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8a322f73fbcd..ad71001f23dd 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,19 @@ 2004-03-17 Michael Koch + * gnu/java/net/PlainDatagramSocketImpl.java + (RECEIVE_LOCK): New member field. + (SEND_LOCK): New member field. + (send0): New method. + (send): Synchronize on SEND_LOCK. + (receive0): New method. + (receive): Synchronize on RECEIVE_LOCK. + * gnu/java/net/natPlainDatagramSocketImplNoNet.cc, + gnu/java/net/natPlainDatagramSocketImplPosix.cc, + gnu/java/net/natPlainDatagramSocketImplWin32.cc + (send0): Renamed from send. + (receive0): Renamed from receive. +2004-03-17 Michael Koch + * gnu/java/net/natPlainSocketImplPosix.cc (write): Just call write(jbyteArray, offset, len). (read): Just call read(jbyteArray, offset, len). diff --git a/libjava/gnu/java/net/PlainDatagramSocketImpl.java b/libjava/gnu/java/net/PlainDatagramSocketImpl.java index 83d80722450b..62bcba9e7d8f 100644 --- a/libjava/gnu/java/net/PlainDatagramSocketImpl.java +++ b/libjava/gnu/java/net/PlainDatagramSocketImpl.java @@ -1,5 +1,5 @@ /* PlainDatagramSocketImpl.java -- Default DatagramSocket implementation - Copyright (C) 1998, 1999, 2001, 2003 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -60,8 +60,8 @@ import gnu.classpath.Configuration; * It makes native calls to C routines that implement BSD style * SOCK_DGRAM sockets in the AF_INET family. * - * @author Aaron M. Renn - * @author Warren Levy + * @author Aaron M. Renn (arenn@urbanophile.com) + * @author Warren Levy (warrenl@cygnus.com) */ public final class PlainDatagramSocketImpl extends DatagramSocketImpl { @@ -95,6 +95,16 @@ public final class PlainDatagramSocketImpl extends DatagramSocketImpl * This is the actual underlying file descriptor */ int native_fd = -1; + + /** + * Lock object to serialize threads wanting to receive + */ + private final Object RECEIVE_LOCK = new Object(); + + /** + * Lock object to serialize threads wanting to send + */ + private final Object SEND_LOCK = new Object(); // FIXME: Is this necessary? Could it help w/ DatagramSocket.getLocalAddress? // InetAddress address; @@ -179,7 +189,7 @@ public final class PlainDatagramSocketImpl extends DatagramSocketImpl * * @exception IOException If an error occurs */ - protected native void send(DatagramPacket p) throws IOException; + protected native void send(DatagramPacket packet) throws IOException; /** * Receives a UDP packet from the network diff --git a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc index e51c7646ae95..b1bc514c1986 100644 --- a/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc +++ b/libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc @@ -286,6 +286,8 @@ gnu::java::net::PlainDatagramSocketImpl::close () void gnu::java::net::PlainDatagramSocketImpl::send (::java::net::DatagramPacket *p) { + JvSynchronize lock (SEND_LOCK); + // FIXME: Deal with Multicast and if the socket is connected. jint rport = p->getPort(); union SockAddr u; @@ -327,6 +329,8 @@ gnu::java::net::PlainDatagramSocketImpl::send (::java::net::DatagramPacket *p) void gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p) { + JvSynchronize lock (RECEIVE_LOCK); + // FIXME: Deal with Multicast and if the socket is connected. union SockAddr u; socklen_t addrlen = sizeof(u); diff --git a/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc b/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc index d3534791801b..bda03fb6c39f 100644 --- a/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc +++ b/libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc @@ -273,6 +273,8 @@ gnu::java::net::PlainDatagramSocketImpl::close () void gnu::java::net::PlainDatagramSocketImpl::send (::java::net::DatagramPacket *p) { + JvSynchronize lock (SEND_LOCK); + // FIXME: Deal with Multicast and if the socket is connected. jint rport = p->getPort(); union SockAddr u; @@ -313,6 +315,8 @@ gnu::java::net::PlainDatagramSocketImpl::send (::java::net::DatagramPacket *p) void gnu::java::net::PlainDatagramSocketImpl::receive (::java::net::DatagramPacket *p) { + JvSynchronize lock (RECEIVE_LOCK); + // FIXME: Deal with Multicast and if the socket is connected. union SockAddr u; socklen_t addrlen = sizeof(u);