Author: rajith
Date: Tue Jul 15 08:42:13 2008
New Revision: 676938
URL: http://svn.apache.org/viewvc?rev=676938&view=rev
Log:
This is related to QPID-1102.
I have fixed the error handling and revised the while loop in IoSender based on
the comments received during the code review
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoHandler.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoSender.java
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoHandler.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoHandler.java?rev=676938&r1=676937&r2=676938&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoHandler.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoHandler.java
Tue Jul 15 08:42:13 2008
@@ -31,6 +31,7 @@
import org.apache.qpidity.transport.Connection;
import org.apache.qpidity.transport.ConnectionDelegate;
import org.apache.qpidity.transport.Receiver;
+import org.apache.qpidity.transport.TransportException;
import org.apache.qpidity.transport.network.Assembler;
import org.apache.qpidity.transport.network.Disassembler;
import org.apache.qpidity.transport.network.InputHandler;
@@ -94,19 +95,14 @@
{
_socket.connect(new InetSocketAddress(address, port));
}
- while (!_socket.isConnected())
- {
-
- }
-
}
catch (SocketException e)
{
- throw new RuntimeException("Error connecting to broker",e);
+ throw new TransportException("Error connecting to broker",e);
}
catch (IOException e)
{
- throw new RuntimeException("Error connecting to broker",e);
+ throw new TransportException("Error connecting to broker",e);
}
IoSender sender = new IoSender(_socket);
@@ -133,28 +129,21 @@
{
InputStream in = _socket.getInputStream();
int read = 0;
- while(_socket.isConnected())
+ while(read != -1)
{
- try
- {
- read = in.read(_readBuf);
- if (read > 0)
- {
- ByteBuffer b = ByteBuffer.allocate(read);
- b.put(_readBuf,0,read);
- b.flip();
- _receiver.received(b);
- }
- }
- catch(Exception e)
+ read = in.read(_readBuf);
+ if (read > 0)
{
- throw new RuntimeException("Error reading from socket
input stream",e);
+ ByteBuffer b = ByteBuffer.allocate(read);
+ b.put(_readBuf,0,read);
+ b.flip();
+ _receiver.received(b);
}
}
}
catch (IOException e)
{
- throw new RuntimeException("Error getting input stream from the
socket",e);
+ _receiver.exception(new Exception("Error getting input stream from
the socket",e));
}
finally
{
Modified:
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoSender.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoSender.java?rev=676938&r1=676937&r2=676938&view=diff
==============================================================================
---
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoSender.java
(original)
+++
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/transport/network/io/IoSender.java
Tue Jul 15 08:42:13 2008
@@ -23,6 +23,7 @@
import java.net.Socket;
import org.apache.qpidity.transport.Sender;
+import org.apache.qpidity.transport.TransportException;
public class IoSender implements Sender<java.nio.ByteBuffer>
{
@@ -39,7 +40,7 @@
}
catch(IOException e)
{
- throw new RuntimeException("Error getting output stream for
socket",e);
+ throw new TransportException("Error getting output stream for
socket",e);
}
}
@@ -66,8 +67,18 @@
*/
private void write(java.nio.ByteBuffer buf)
{
- byte[] array = new byte[buf.remaining()];
- buf.get(array);
+ byte[] array = null;
+
+ if (buf.hasArray())
+ {
+ array = buf.array();
+ }
+ else
+ {
+ array = new byte[buf.remaining()];
+ buf.get(array);
+ }
+
if( _socket.isConnected())
{
synchronized (lock)
@@ -78,14 +89,13 @@
}
catch(Exception e)
{
- e.fillInStackTrace();
- throw new RuntimeException("Error trying to write to the
socket",e);
+ throw new TransportException("Error trying to write to the
socket",e);
}
}
}
else
{
- throw new RuntimeException("Trying to write on a closed socket");
+ throw new TransportException("Trying to write on a closed socket");
}
}