public void run()

in src/main/java/com/microsoft/azure/datalake/store/ReadBufferWorker.java [30:55]


    public void run() {
        try {
            unleashWorkers.await();
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
        ReadBufferManager bufferManager = ReadBufferManager.getBufferManager();
        ReadBuffer buffer;
        while (true) {
            try {
                buffer = bufferManager.getNextBlockToRead();   // blocks, until a buffer is available for this thread
            } catch (InterruptedException ex) {
                Thread.currentThread().interrupt();
                return;
            }
            if (buffer != null) {
                try {
                    // do the actual read, from the file.
                    int bytesRead = buffer.file.readRemote(buffer.offset, buffer.buffer, 0, buffer.requestedLength, true);
                    bufferManager.doneReading(buffer, ReadBufferStatus.AVAILABLE, bytesRead);  // post result back to ReadBufferManager
                } catch (Exception ex) {
                    bufferManager.doneReading(buffer, ReadBufferStatus.READ_FAILED, 0);
                }
            }
        }
    }