@Override public boolean run(ClientContext context) { // Tell the segments to cancel. boolean allDone = true; for(SplitFileInserterSegmentStorage segment : segments) { if(!segment.cancel()) allDone = false; } if(crossSegments != null) { for(SplitFileInserterCrossSegmentStorage segment : crossSegments) { if(!segment.cancel()) allDone = false; } } if(allDone) { synchronized(this) { // Could have beaten us to it in callback. if(hasFinished()) return false; status = Status.FAILED; } callback.onFailed(e); return true; } else { // Wait for them to finish encoding. return false; } }