All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bt.data.range.SynchronizedBlockSet Maven / Gradle / Ivy

There is a newer version: 1.10
Show newest version
package bt.data.range;

import bt.data.BlockSet;

import java.util.concurrent.locks.ReentrantLock;

/**
 * @since 1.2
 */
class SynchronizedBlockSet implements BlockSet {

    private final BlockSet delegate;
    private final ReentrantLock lock;

    /**
     * @since 1.2
     */
    SynchronizedBlockSet(BlockSet delegate) {
        this.delegate = delegate;
        this.lock = new ReentrantLock();
    }

    @Override
    public int blockCount() {
        return delegate.blockCount();
    }

    @Override
    public long length() {
        return delegate.length();
    }

    @Override
    public long blockSize() {
        return delegate.blockSize();
    }

    @Override
    public long lastBlockSize() {
        return delegate.lastBlockSize();
    }

    @Override
    public boolean isPresent(int blockIndex) {
        lock.lock();
        try {
            return delegate.isPresent(blockIndex);
        } finally {
            lock.unlock();
        }
    }

    @Override
    public boolean isComplete() {
        lock.lock();
        try {
            return delegate.isComplete();
        } finally {
            lock.unlock();
        }
    }

    @Override
    public boolean isEmpty() {
        lock.lock();
        try {
            return delegate.isEmpty();
        } finally {
            lock.unlock();
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy