diff options
author | Aidan Skinner <aidan@apache.org> | 2009-08-19 14:03:25 +0000 |
---|---|---|
committer | Aidan Skinner <aidan@apache.org> | 2009-08-19 14:03:25 +0000 |
commit | f0051104b5b99601507c578bd0a7b819a76aef55 (patch) | |
tree | d06298ffbe18d78cac756c4b99976ee9b2ab2191 | |
parent | 0314cbe225dce796e09ae9abbd450323808fe493 (diff) | |
download | qpid-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.java | 5 | ||||
-rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MINANetworkDriver.java | 15 |
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) |