public void loadSegment(DataSegment segment, LoadPeonCallback callback) { synchronized (lock) { if ((currentlyLoading != null) && currentlyLoading.getSegmentIdentifier().equals(segment.getIdentifier())) { if (callback != null) { currentlyLoading.addCallback(callback); } return; } } SegmentHolder holder = new SegmentHolder(segment, LOAD, Arrays.asList(callback)); synchronized (lock) { if (segmentsToLoad.contains(holder)) { if ((callback != null)) { currentlyLoading.addCallback(callback); } return; } } log.info("Asking server peon[%s] to load segment[%s]", basePath, segment); queuedSize.addAndGet(segment.getSize()); segmentsToLoad.add(holder); doNext(); }
public long getSegmentSize() { return segment.getSize(); }