Package io.fathom.cloud.storage

Source Code of io.fathom.cloud.storage.FileBlob

package io.fathom.cloud.storage;

import io.fathom.cloud.blobs.BlobData;

import java.io.File;
import java.io.IOException;

import com.google.common.io.ByteSource;
import com.google.common.io.Files;
import com.google.protobuf.ByteString;

public class FileBlob {
    public final ByteString hash;
    public final ByteString hashResume;
    public final long dataLength;
    public final BlobData data;

    public FileBlob(ByteString hash, ByteString hashResume, long dataLength, BlobData data) {
        this.hash = hash;
        this.hashResume = hashResume;
        this.dataLength = dataLength;
        this.data = data;
    }

    public static FileBlob build(File src) throws IOException {
        return build(Files.asByteSource(src));
    }

    public static FileBlob build(ByteSource src) throws IOException {
        long dataLength = src.size();

        // We'd probably do better with a bigger hash,
        // but we need this for the etag
        // HashCode md5 = Hashing.md5().hashBytes(data);
        ResumableMD5Digest md5 = ResumableMD5Digest.get();
        md5.update(src);

        ByteString hashResume = md5.getState();
        ByteString hash = ByteString.copyFrom(md5.digest());

        BlobData blob = new BlobData(src, hash);
        return new FileBlob(hash, hashResume, dataLength, blob);
    }

}
TOP

Related Classes of io.fathom.cloud.storage.FileBlob

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.