pier 01/07/15 01:40:59 Modified: webapp/java .cvsignore WarpConfigurationHandler.java WarpConnection.java WarpPacket.java Log: Modified WARP/0.9 protocol. Revision Changes Path 1.3 +1 -0 jakarta-tomcat-connectors/webapp/java/.cvsignore Index: .cvsignore =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- .cvsignore 2001/07/13 02:33:23 1.2 +++ .cvsignore 2001/07/15 08:40:58 1.3 @@ -1,4 +1,5 @@ .DS_Store +Constants.java Makefile org warp.jar 1.5 +10 -0 jakarta-tomcat-connectors/webapp/java/WarpConfigurationHandler.java Index: WarpConfigurationHandler.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpConfigurationHandler.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- WarpConfigurationHandler.java 2001/07/13 03:05:22 1.4 +++ WarpConfigurationHandler.java 2001/07/15 08:40:58 1.5 @@ -78,6 +78,16 @@ packet.writeUnsignedShort(Constants.VERS_MINOR); packet.writeInteger(-1); connection.send(packet); + + connection.recv(packet); + String appl=packet.readString(); + String host=packet.readString(); + int port=packet.readUnsignedShort(); + String path=packet.readString(); + + if (Constants.DEBUG) + connection.getConnector().debug(this,"Deploying application \""+appl+ + "\" under \"http://"+host+":"+port+path); return(true); //while (true) { 1.13 +35 -4 jakarta-tomcat-connectors/webapp/java/WarpConnection.java Index: WarpConnection.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpConnection.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- WarpConnection.java 2001/07/13 03:05:23 1.12 +++ WarpConnection.java 2001/07/15 08:40:58 1.13 @@ -201,10 +201,11 @@ */ public void send(WarpPacket packet) throws IOException { - if (Constants.DEBUG) - this.getConnector().debug(this,"Sending packet TYPE="+ - packet.getType()+" LENGTH="+ - packet.size); + if (Constants.DEBUG) { + this.getConnector().debug(this,">> TYPE="+packet.getType()+ + " LENGTH="+packet.size); + this.getConnector().debug(this,">> "+packet.dump()); + } this.output.write(packet.getType()&0x0ff); this.output.write((packet.size>>8)&0x0ff); @@ -217,5 +218,35 @@ /** * Receive a WARP packet over this connection. */ + public void recv(WarpPacket packet) + throws IOException { + int t=this.input.read(); + int l1=this.input.read(); + int l2=this.input.read(); + if ((t|l1|l2)==-1) + throw new IOException("Premature packet header end"); + + packet.reset(); + packet.setType(t&0x0ff); + packet.size=(( l1 & 0x0ff ) << 8) | ( l2 & 0x0ff ); + + if (packet.size>0) { + int off=0; + int ret=0; + while (true) { + ret=this.input.read(packet.buffer,off,packet.size-off); + if (ret==-1) + throw new IOException("Premature packet payload end"); + off+=ret; + if(off==packet.size) break; + } + } + + if (Constants.DEBUG) { + this.getConnector().debug(this,"<< TYPE="+packet.getType()+ + " LENGTH="+packet.size); + this.getConnector().debug(this,"<< "+packet.dump()); + } + } } 1.11 +20 -1 jakarta-tomcat-connectors/webapp/java/WarpPacket.java Index: WarpPacket.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpPacket.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- WarpPacket.java 2001/07/13 03:05:25 1.10 +++ WarpPacket.java 2001/07/15 08:40:58 1.11 @@ -218,9 +218,28 @@ public String readString() { int length=this.readUnsignedShort(); try { - return(new String(this.buffer,this.pointer,length,"UTF-8")); + String ret=new String(this.buffer,this.pointer,length,"UTF-8"); + this.pointer+=length; + return(ret); } catch (UnsupportedEncodingException s) { throw new RuntimeException("Unsupported encoding UTF-8"); } + } + + public String dump() { + StringBuffer buf=new StringBuffer("DATA="); + for (int x=0; x<this.size; x++) { + if ((this.buffer[x]>32)&&(this.buffer[x]<127)) { + buf.append((char)this.buffer[x]); + } else { + buf.append("0x"); + String digit=Integer.toHexString((int)this.buffer[x]); + if (digit.length()<2) buf.append('0'); + if (digit.length()>2) digit=digit.substring(digit.length()-2); + buf.append(digit); + } + buf.append(" "); + } + return(buf.toString()); } }