Ejemplo n.º 1
0
 @Override
 protected void handleData(ByteBuffer resource, Http2FrameHeaderParser header) throws IOException {
   boolean continuationFramesComing =
       Bits.anyAreClear(header.flags, Http2Channel.HEADERS_FLAG_END_HEADERS);
   if (frameRemaining == -1) {
     frameRemaining = header.length;
   }
   final boolean moreDataThisFrame = resource.remaining() < frameRemaining;
   final int pos = resource.position();
   try {
     if (!beforeHeadersHandled) {
       if (!handleBeforeHeader(resource, header)) {
         return;
       }
     }
     beforeHeadersHandled = true;
     decoder.setHeaderEmitter(this);
     try {
       decoder.decode(resource, moreDataThisFrame);
     } catch (HpackException e) {
       throw new ConnectionErrorException(Http2Channel.ERROR_COMPRESSION_ERROR, e);
     }
   } finally {
     int used = resource.position() - pos;
     frameRemaining -= used;
   }
 }