protected void transportDataReceived(ReadableBuffer frame, boolean endOfStream) {
    if (transportError != null) {
      // We've already detected a transport error and now we're just accumulating more detail
      // for it.
      transportError = transportError.augmentDescription("DATA-----------------------------\n"
          + ReadableBuffers.readAsString(frame, errorCharset));
      frame.close();
      if (transportError.getDescription().length() > 1000 || endOfStream) {
        http2ProcessingFailed(transportError, false, transportErrorMetadata);
      }
    } else {
      if (!headersReceived) {
        http2ProcessingFailed(
            Status.INTERNAL.withDescription("headers not received before payload"),
            false,
            new Metadata());
        return;
      }
      inboundDataReceived(frame);
      if (endOfStream) {
        // This is a protocol violation as we expect to receive trailers.
        transportError =
            Status.INTERNAL.withDescription("Received unexpected EOS on DATA frame from server.");
        transportErrorMetadata = new Metadata();
        transportReportStatus(transportError, false, transportErrorMetadata);
      }
    }
  }
protected void transportDataReceived ( ReadableBuffer frame , boolean endOfStream ) { if ( transportError != null ) { transportError = transportError . augmentDescription ( "DATA-----------------------------\n" + ReadableBuffers . readAsString ( frame , errorCharset ) ) ; frame . close ( ) ; if ( transportError . getDescription ( ) . length ( ) > 1000 || endOfStream ) { http2ProcessingFailed ( transportError , false , transportErrorMetadata ) ; } } else { if ( ! headersReceived ) { http2ProcessingFailed ( Status . INTERNAL . withDescription ( "headers not received before payload" ) , false , new Metadata ( ) ) ; return ; } inboundDataReceived ( frame ) ; if ( endOfStream ) { transportError = Status . INTERNAL . withDescription ( "Received unexpected EOS on DATA frame from server." ) ; transportErrorMetadata = new Metadata ( ) ; transportReportStatus ( transportError , false , transportErrorMetadata ) ; } } }
Called by subclasses whenever a data frame is received from the transport.

@param frame the received data frame
@param endOfStream {@code true} if there will be no more data received for this stream