First submit for debug plugin
[phpeclipse.git] / net.sourceforge.phpeclipse.debug.core / src / net / sourceforge / phpdt / internal / debug / core / PHPDBGPacket.java
diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGPacket.java b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/PHPDBGPacket.java
new file mode 100644 (file)
index 0000000..03d3350
--- /dev/null
@@ -0,0 +1,56 @@
+/**********************************************************************
+Copyright (c) 2000, 2002 IBM Corp. and others.
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Common Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/cpl-v10.html
+
+Contributors:
+       Vicente Fernando - www.alfersoft.com.ar - Initial implementation
+**********************************************************************/
+package net.sourceforge.phpdt.internal.debug.core;
+
+import java.io.OutputStream;
+import java.util.Vector;
+import java.io.IOException;
+public class PHPDBGPacket {
+
+       private static final int PACKET_HEADER_SIZE= 16;
+       private char[] packetHeader= new char[PACKET_HEADER_SIZE];
+       private int packetSize;
+       private Vector frames= new Vector();
+       
+       public PHPDBGPacket(char[] packetType) {
+               PHPDBGBase.copyChars(packetHeader, PHPDBGBase.DBGSYNC, 4);
+               PHPDBGBase.copyCharsTo(packetHeader, packetType, 4, 4);
+       }
+
+       public void addFrame(PHPDBGFrame frame) {
+               frames.add(frame);
+               packetSize+= frame.getSize();
+       }
+       
+       public void sendPacket(OutputStream out) throws IOException {
+               int i;
+               PHPDBGFrame frame;
+               
+               PHPDBGBase.copyCharsTo(packetHeader, PHPDBGBase.IntToChar4(packetSize), 4, 12);
+               
+               // Send packet header
+               out.write(PHPDBGBase.CharArrayToByteArray(packetHeader));
+               out.flush();
+
+               // Send Frames
+               for(i=0; i < frames.size(); i++) {
+                       // Header of frame
+                       frame= (PHPDBGFrame)frames.get(i);
+                       out.write(PHPDBGBase.CharArrayToByteArray(frame.getHeader()));
+                       out.flush();
+                       if (frame.getSizeOfData() > 0) {
+                               // Data of frame
+                               out.write(PHPDBGBase.CharArrayToByteArray(frame.getFrameData()));
+                               out.flush();
+                       }
+               }
+       }
+}
\ No newline at end of file