* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79579
138bc75d-0d04-0410-961f-
82ee72b054a4
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).
/* 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.
* 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
{
* 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;
*
* @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
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;
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);
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;
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);