Example usage for org.apache.hadoop.hdfs.web.resources OffsetParam OffsetParam

List of usage examples for org.apache.hadoop.hdfs.web.resources OffsetParam OffsetParam

Introduction

In this page you can find the example usage for org.apache.hadoop.hdfs.web.resources OffsetParam OffsetParam.

Prototype

public OffsetParam(final String str) 

Source Link

Document

Constructor.

Usage

From source file:com.bigstep.datalake.DLFileSystem.java

License:Apache License

@Override
public FSDataInputStream open(final Path f, final int buffersize) throws IOException {
    statistics.incrementReadOps(1);//from   w  ww  . j a  v a 2  s  . c  om
    final HttpOpParam.Op op = GetOpParam.Op.OPEN;

    if (this.shouldUseEncryption) {
        DLEncryptionUtils dlenc = DLEncryptionUtils.getInstance();

        int nHeaderSize = dlenc.getHeaderDetailLength();
        byte[] b = new byte[nHeaderSize];
        byte[] key = dlenc.getSecretKey();
        int nBlockSize = key.length;
        byte[] initVector = new byte[nBlockSize];

        // use a runner so the open can recover from an invalid token
        FsPathConnectionRunner runnerHeader = new FsPathConnectionRunner(op, f, new BufferSizeParam(buffersize),
                new LengthParam((long) nHeaderSize + nBlockSize));
        OffsetUrlInputStream inputStreamHeader = new OffsetUrlInputStream(new UnresolvedUrlOpener(runnerHeader),
                new OffsetUrlOpener(null));

        inputStreamHeader.readFully(0, b, 0, nHeaderSize);
        inputStreamHeader.readFully(nHeaderSize, initVector, 0, nBlockSize);

        FsPathConnectionRunner runnerData = new FsPathConnectionRunner(op, f, new BufferSizeParam(buffersize),
                new OffsetParam((long) nHeaderSize + nBlockSize));
        OffsetUrlInputStream inputStreamData = new OffsetUrlInputStream(new UnresolvedUrlOpener(runnerData),
                new OffsetUrlOpener(null));

        Properties props = new Properties();
        props.put("commons.crypto.stream.buffer.size", buffersize);
        return new FSDataInputStream(new DLPositionedCryptoInputStream(props,
                new DLStreamInput(inputStreamData, buffersize), key, initVector, 0L));
    } else {
        FsPathConnectionRunner runner = new FsPathConnectionRunner(op, f, new BufferSizeParam(buffersize));
        return new FSDataInputStream(
                new OffsetUrlInputStream(new UnresolvedUrlOpener(runner), new OffsetUrlOpener(null)));
    }
}