# HG changeset patch # User Shinji KONO # Date 1312342490 -32400 # Node ID 40c22e507655d4c2b6618116598cb9e03beefe11 # Parent aa7df396e04defac083d7d59edca40918de56a98 unzip/zip Test passed. diff -r aa7df396e04d -r 40c22e507655 src/myVncProxy/MyRfbProto.java --- a/src/myVncProxy/MyRfbProto.java Wed Aug 03 11:40:18 2011 +0900 +++ b/src/myVncProxy/MyRfbProto.java Wed Aug 03 12:34:50 2011 +0900 @@ -16,6 +16,7 @@ import java.net.ServerSocket; import java.net.Socket; import java.nio.ByteBuffer; +import java.util.Iterator; import java.util.LinkedList; import javax.imageio.ImageIO; @@ -32,7 +33,7 @@ import java.io.OutputStream; public -class MyRfbProto extends RfbProto { +class MyRfbProto extends RfbProto { final static String versionMsg_3_998 = "RFB 003.998\n"; /** * CheckMillis is one of new msgType for RFB 3.998. @@ -566,6 +567,7 @@ public int unzip(Inflater inflater, LinkedList inputs, LinkedList outputs) throws DataFormatException { int len=0,len0; + inflater.reset(); do { ByteBuffer input = inputs.poll(); inflater.setInput(input.array(),0,input.limit()); @@ -716,29 +718,50 @@ return copy; } + + public void equalByteBuffers(LinkedList in, LinkedList out2) { - int k = 0; - ByteBuffer c = out2.get(k++); - c.mark(); - for(ByteBuffer b:in) { - b.mark(); - while(b.remaining()>0) { - if (c.remaining()==0) { - c.reset(); - if (k>=out2.size()) { - assertEquals(0,1); - return; + Iterable i = byteBufferIterator(in); + Iterator o = byteBufferIterator(out2).iterator(); + + for(int b: i) { + if (o.hasNext()) { + int c = o.next(); + assertEquals(b,c); + } else + assertEquals(0,1); + } + if (o.hasNext()) assertEquals(0,1); + // System.out.println(); + } + + private Iterable byteBufferIterator(final LinkedList in) { + return new Iterable() { + public Iterator iterator() { + return new Iterator() { + int bytes = 0; + int buffers = 0; + public boolean hasNext() { + if (buffers>=in.size()) return false; + ByteBuffer b = in.getFirst(); + return bytes