1) Added a 'try catch block' to sendPacket to avoid exceptions when PHP script is...
authorrobekras <robekras>
Tue, 8 Nov 2005 19:10:49 +0000 (19:10 +0000)
committerrobekras <robekras>
Tue, 8 Nov 2005 19:10:49 +0000 (19:10 +0000)
net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGPacket.java

index cbbcdbe..313f57d 100644 (file)
@@ -13,6 +13,17 @@ package net.sourceforge.phpdt.internal.debug.core;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Vector;
+
+/**
+ *
+ * TODO: Added a try catch block in sendPacket to avoid an execption in case the PHP script
+ * has finished and DBG isn't ready for receiving any new frame.
+ * (This happens when mouse is hovering over variable or user switches to watch expression)
+ * It is not clear why DBG isn't sending any SCRIPT_END event (or something similar),
+ * or whether there is another way to check whether DBG is listening or not.
+ * For the moment this is only a workaround.
+ *
+ */
 public class PHPDBGPacket {
 
        private static final int        PACKET_HEADER_SIZE      = 16;
@@ -36,19 +47,23 @@ public class PHPDBGPacket {
 
                PHPDBGBase.copyCharsTo (packetHeader, PHPDBGBase.IntToChar4 (packetSize), 4, 12);
 
-               out.write (PHPDBGBase.CharArrayToByteArray (packetHeader));                             // Send packet header
-               out.flush ();                                                               //
-
-               for (i = 0; i < frames.size (); i++) {                                                  // Send Frames
-                       frame = (PHPDBGFrame) frames.get (i);                                                   // Header of frame
+               try {
+                       out.write (PHPDBGBase.CharArrayToByteArray (packetHeader));                             // Send packet header
+                       out.flush ();                                                               //
 
-                       out.write (PHPDBGBase.CharArrayToByteArray (frame.getHeader ()));       // Convert the char buffer to a byte buffer and send
-                       out.flush ();
+                       for (i = 0; i < frames.size (); i++) {                                                  // Send Frames
+                               frame = (PHPDBGFrame) frames.get (i);                                                   // Header of frame
 
-                       if (frame.getSizeOfData () > 0) {                                       // If there is a data frame
-                               out.write (PHPDBGBase.CharArrayToByteArray (frame.getFrameData ()));// Convert the data char buffer to a byte buffer and send
+                               out.write (PHPDBGBase.CharArrayToByteArray (frame.getHeader ()));       // Convert the char buffer to a byte buffer and send
                                out.flush ();
+
+                               if (frame.getSizeOfData () > 0) {                                       // If there is a data frame
+                                       out.write (PHPDBGBase.CharArrayToByteArray (frame.getFrameData ()));// Convert the data char buffer to a byte buffer and send
+                                       out.flush ();
+                               }
                        }
                }
+               catch (Exception e) {
+               }
        }
 }