summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAidan Skinner <aidan@apache.org>2009-08-19 14:03:25 +0000
committerAidan Skinner <aidan@apache.org>2009-08-19 14:03:25 +0000
commitf0051104b5b99601507c578bd0a7b819a76aef55 (patch)
treed06298ffbe18d78cac756c4b99976ee9b2ab2191
parent0314cbe225dce796e09ae9abbd450323808fe493 (diff)
downloadqpid-python-f0051104b5b99601507c578bd0a7b819a76aef55.tar.gz
QPID-2024: Change send to stash the future and have flush join on that so that it only returns when all data has been written.
Add getLocalAddress. git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/java-network-refactor@805809 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkDriver.java5
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MINANetworkDriver.java15
2 files changed, 16 insertions, 4 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkDriver.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkDriver.java
index d45cee8004..34b0ef65be 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkDriver.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/NetworkDriver.java
@@ -43,9 +43,12 @@ public interface NetworkDriver extends Sender<java.nio.ByteBuffer>
void bind (int port, InetAddress[] addresses, ProtocolEngineFactory protocolFactory,
NetworkDriverConfiguration config, SSLContextFactory sslFactory) throws BindException;
- // Returns the remote address of underlying socket
+ // Returns the remote address of the underlying socket
SocketAddress getRemoteAddress();
+ // Returns the local address of the underlying socket
+ SocketAddress getLocalAddress();
+
/**
* The length of time after which the ProtocolEngines readIdle() method should be called if no data has been
* read in seconds
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MINANetworkDriver.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MINANetworkDriver.java
index 96fb7b1ef8..7330a042df 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MINANetworkDriver.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MINANetworkDriver.java
@@ -78,6 +78,8 @@ public class MINANetworkDriver extends IoHandlerAdapter implements NetworkDriver
private Throwable _lastException;
private boolean _acceptingConnections = false;
+ private WriteFuture _lastWriteFuture;
+
public MINANetworkDriver(boolean useNIO, int processors, boolean executorPool, boolean protectIO)
{
_useNIO = useNIO;
@@ -174,6 +176,11 @@ public class MINANetworkDriver extends IoHandlerAdapter implements NetworkDriver
{
return _ioSession.getRemoteAddress();
}
+
+ public SocketAddress getLocalAddress()
+ {
+ return _ioSession.getLocalAddress();
+ }
public void open(int port, InetAddress destination, ProtocolEngine engine, NetworkDriverConfiguration config,
SSLEngine sslEngine) throws OpenException
@@ -256,13 +263,15 @@ public class MINANetworkDriver extends IoHandlerAdapter implements NetworkDriver
public void flush()
{
- // MINA doesn't support flush
+ if (_lastWriteFuture != null)
+ {
+ _lastWriteFuture.join();
+ }
}
public void send(ByteBuffer msg)
{
- WriteFuture future = _ioSession.write(org.apache.mina.common.ByteBuffer.wrap(msg));
- future.join();
+ _lastWriteFuture = _ioSession.write(org.apache.mina.common.ByteBuffer.wrap(msg));
}
public void setIdleTimeout(long l)