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");
         }
     }
 


Reply via email to