Mercurial > hg > Members > nobuyasu > tightVNCProxy
comparison src/myVncProxy/MyRfbProto.java @ 85:b384db76c28a
a little progress...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 03 Aug 2011 07:39:43 +0900 |
parents | 704e01d2390c |
children | b7225991184b |
comparison
equal
deleted
inserted
replaced
84:704e01d2390c | 85:b384db76c28a |
---|---|
560 for (;;) { | 560 for (;;) { |
561 LinkedList<byte[]> bufs = c.poll(); | 561 LinkedList<byte[]> bufs = c.poll(); |
562 byte[] b = bufs.poll(); | 562 byte[] b = bufs.poll(); |
563 if (b[0]==RfbProto.FramebufferUpdate) { | 563 if (b[0]==RfbProto.FramebufferUpdate) { |
564 int encoding = u32(b,12); | 564 int encoding = u32(b,12); |
565 int clen = u32(bufs.poll(),0); | |
566 if (encoding==RfbProto.EncodingZlib||encoding==RfbProto.EncodingZRLE) { | 565 if (encoding==RfbProto.EncodingZlib||encoding==RfbProto.EncodingZRLE) { |
566 int clen = u32(bufs.poll(),0); | |
567 LinkedList<byte[]> outs = new LinkedList<byte[]>(); | 567 LinkedList<byte[]> outs = new LinkedList<byte[]>(); |
568 int len = 0, count = 0; | 568 int len = 0, count = 0; |
569 int len2=0; | 569 int len2=0; |
570 int bufSize = bufs.size(); | 570 //int bufSize = bufs.size(); |
571 int bufCount = 0; | 571 //int bufCount = 0; |
572 for( byte[] b1 : bufs) { | 572 deflater.reset(); |
573 if (++bufCount > bufSize) | 573 do { |
574 byte[] b1 = bufs.poll(); | |
575 if (bufs.size()==0) { | |
574 deflater.setInput(b1,0,clen); | 576 deflater.setInput(b1,0,clen); |
575 else | 577 deflater.finish(); |
578 } else | |
576 deflater.setInput(b1); | 579 deflater.setInput(b1); |
577 int len1=0; | 580 int len1=0; |
578 do { | 581 do { |
579 byte[] c1 = new byte[INFLATE_BUFSIZE]; | 582 byte[] c1 = new byte[INFLATE_BUFSIZE]; |
580 len2 = len1; | 583 len2 = len1; |
583 outs.addLast(c1); | 586 outs.addLast(c1); |
584 count ++; | 587 count ++; |
585 len += len1; | 588 len += len1; |
586 } | 589 } |
587 } while (len1 > 0); | 590 } while (len1 > 0); |
588 } | 591 } while(bufs.size()>0); |
589 byte[] blen = castIntByte(len); | 592 byte[] blen = castIntByte(len); |
590 outs.addFirst(blen); | 593 outs.addFirst(blen); |
591 outs.addFirst(b); | 594 outs.addFirst(b); |
592 int i = 0; | 595 int i = 0; |
593 for(byte [] out: outs) { | 596 for(byte [] out: outs) { |
598 } | 601 } |
599 } | 602 } |
600 } else { | 603 } else { |
601 os.write(b, 0, b.length); | 604 os.write(b, 0, b.length); |
602 } | 605 } |
606 os.flush(); | |
603 } | 607 } |
604 } catch (IOException e) { | 608 } catch (IOException e) { |
605 /** | 609 /** |
606 * if socket closed | 610 * if socket closed |
607 */ | 611 */ |