summaryrefslogtreecommitdiff
path: root/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java39
1 files changed, 15 insertions, 24 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java
index 5fc3032d35..10d70ed34f 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/transport/network/mina/MinaSender.java
@@ -26,20 +26,16 @@ import org.apache.mina.common.IoSession;
import org.apache.mina.common.WriteFuture;
import org.apache.qpid.transport.Sender;
import org.apache.qpid.transport.TransportException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
+import org.apache.qpid.transport.network.Transport;
/**
* MinaSender
*/
public class MinaSender implements Sender<java.nio.ByteBuffer>
{
- private static final Logger _log = LoggerFactory.getLogger(MinaSender.class);
-
private final IoSession _session;
- private WriteFuture _lastWrite;
- private int _idleTimeout = 0;
+ private int _idle = 0;
+ private WriteFuture _written;
public MinaSender(IoSession session)
{
@@ -52,41 +48,36 @@ public class MinaSender implements Sender<java.nio.ByteBuffer>
{
throw new TransportException("attempted to write to a closed socket");
}
- ByteBuffer mina = ByteBuffer.allocate(buf.capacity());
- mina.put(buf);
- mina.flip();
- flush();
- _lastWrite = _session.write(mina);
+ _written = _session.write(ByteBuffer.wrap(buf));
}
public synchronized void flush()
{
- if (_lastWrite != null)
+ if (_written != null)
{
- _lastWrite.join();
- if (!_lastWrite.isWritten())
- {
- throw new RuntimeException("Error flushing buffer");
- }
+ _written.join(Transport.DEFAULT_TIMEOUT);
+ if (!_written.isWritten())
+ {
+ throw new TransportException("Error flushing data buffer");
+ }
}
}
- public void close()
+ public synchronized void close()
{
- // MINA will sometimes throw away in-progress writes when you ask it to close
flush();
CloseFuture closed = _session.close();
closed.join();
}
- public void setIdleTimeout(int i)
+ public void setIdleTimeout(int idle)
{
- _idleTimeout = i;
- _session.setWriteTimeout(_idleTimeout);
+ _idle = idle;
+ _session.setWriteTimeout(_idle);
}
public long getIdleTimeout()
{
- return _idleTimeout;
+ return _idle;
}
}