aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMichael Koch <konqueror@gmx.de>2004-03-17 08:10:28 +0000
committerMichael Koch <mkoch@gcc.gnu.org>2004-03-17 08:10:28 +0000
commit3e368284acf08cd61daf74eb81347e882f60f106 (patch)
tree2d40e9d43e44245f6f775602706091f7d8f7b8d3 /libjava
parentaa18fb30ad9c857b5fe102b2a34c335734eca475 (diff)
downloadgcc-3e368284acf08cd61daf74eb81347e882f60f106.zip
gcc-3e368284acf08cd61daf74eb81347e882f60f106.tar.gz
gcc-3e368284acf08cd61daf74eb81347e882f60f106.tar.bz2
2004-03-17 Michael Koch <konqueror@gmx.de>
* 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
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog14
-rw-r--r--libjava/gnu/java/net/PlainDatagramSocketImpl.java18
-rw-r--r--libjava/gnu/java/net/natPlainDatagramSocketImplPosix.cc4
-rw-r--r--libjava/gnu/java/net/natPlainDatagramSocketImplWin32.cc4
4 files changed, 36 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 8a322f7..ad71001 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,19 @@
2004-03-17 Michael Koch <konqueror@gmx.de>
+ * 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 <konqueror@gmx.de>
+
* 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 83d8072..62bcba9 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 <arenn@urbanophile.com>
- * @author Warren Levy <warrenl@cygnus.com>
+ * @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 e51c764..b1bc514 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 d353479..bda03fb 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);