private void checkReadSourceErrorsCount() throws ProxyCacheException {
        int errorsCount = readSourceErrorsCount.get();
        if (errorsCount >= MAX_READ_SOURCE_ATTEMPTS) {
            readSourceErrorsCount.set(0);
            throw new ProxyCacheException("Error reading source " + errorsCount + " times");
        }
    }
Proxy for {@link Source} with caching support ({@link Cache}).
<p/>
Can be used only for sources with persistent data (that doesn't change with time).
Method {@link #read(byte[], long, int)} will be blocked while fetching data from source.
Useful for streaming something with caching e.g. streaming video/audio etc.
VideoCache/src/main/java/com/yc/videocache/ProxyCache.java