Future calculateMD5()

in src/main/java/org/apache/cassandra/sidecar/utils/MD5ChecksumVerifier.java [80:107]


    Future<String> calculateMD5(AsyncFile file)
    {
        MessageDigest digest;
        try
        {
            digest = MessageDigest.getInstance("MD5");
        }
        catch (NoSuchAlgorithmException e)
        {
            return Future.failedFuture(e);
        }

        Promise<String> result = Promise.promise();
        file.pause()
            .setReadBufferSize(DEFAULT_READ_BUFFER_SIZE)
            .handler(buf -> digest.update(buf.getBytes()))
            .endHandler(_v -> {
                result.complete(Base64.getEncoder().encodeToString(digest.digest()));
                file.end();
            })
            .exceptionHandler(cause -> {
                LOGGER.error("Error while calculating MD5 checksum", cause);
                result.fail(cause);
                file.end();
            })
            .resume();
        return result.future();
    }