private void handleSimpleBlob(BlobData blobData, byte[] userMetadata, ByteBuffer encryptionKey) {
      ByteBuf chunkBuf = blobData.content();

      chunkIdIterator = null;
      numChunksTotal = 0;
      dataChunks = null;
      if (!options.getChunkIdsOnly) {
        // We are going to send this chunkBuf later back to the router, so increase the counter here
        chunkBuf.retain();
        chunkIndex = 0;
        numChunksTotal = 1;
        boolean launchedJob = maybeLaunchCryptoJob(chunkBuf, userMetadata, encryptionKey, blobId);
        if (!launchedJob) {
          routerMetrics.getFirstDataChunkLatencyMs.update(System.currentTimeMillis() - submissionTimeMs);
          routerMetrics.getDataChunkLatencyMs.update(System.currentTimeMillis() - initializedTimeMs);

          ByteBuf decompressedContent = decompressContent(chunkBuf);
          if (decompressedContent != null) {
            totalSize = decompressedContent.readableBytes();
            if (!resolveRange(totalSize)) {
              chunkIndexToBuf.put(0, filterChunkToRange(decompressedContent));
              numChunksRetrieved.set(1);
            } else {
              decompressedContent.release();
            }
          }
        }
      }
    }
Process a simple blob and extract the requested data from the blob.
@param blobData the simple blob's data
@param userMetadata userMetadata of the blob
@param encryptionKey encryption key for the blob. Could be null for non encrypted blob.
ambry-router/src/main/java/com/github/ambry/router/GetBlobOperation.java