public SwiftLargeObjectUploadFeature(final SwiftSession session, final SwiftRegionService regionService, final SwiftObjectListService listService, final SwiftSegmentService segmentService, final Write<StorageObject> writer, final Long segmentSize, final Integer concurrency) { super(writer); this.session = session; this.regionService = regionService; this.writer = writer; this.segmentSize = segmentSize; this.segmentService = segmentService; this.listService = listService; this.concurrency = concurrency; }
@Override public AttributedList<Path> list(final Path directory, final ListProgressListener listener) throws BackgroundException { if(directory.isRoot()) { return new SwiftContainerListService(session, new SwiftLocationFeature.SwiftRegion(session.getHost().getRegion())).list(directory, listener); } else { return new SwiftObjectListService(session, regionService).list(directory, listener); } }
if(status.isAppend()) { existingSegments.addAll(listService.list(segmentService.getSegmentsDirectory(file, status.getOffset() + status.getLength()), new DisabledListProgressListener()).toList());
@Override public Append append(final Path file, final Long length, final Cache<Path> cache) throws BackgroundException { if(length >= preferences.getLong("openstack.upload.largeobject.threshold")) { if(preferences.getBoolean("openstack.upload.largeobject")) { long size = 0L; final List<Path> segments = listService.list(segmentService.getSegmentsDirectory(file, length), new DisabledListProgressListener()).toList(); if(segments.isEmpty()) { return Write.notfound; } for(Path segment : segments) { size += segment.attributes().getSize(); } return new Append(size); } } if(finder.withCache(cache).find(file)) { final PathAttributes attr = attributes.withCache(cache).find(file); return new Append(false, true).withSize(attr.getSize()).withChecksum(attr.getChecksum()); } return Write.notfound; }
public SwiftWriteFeature(final SwiftSession session, final SwiftRegionService regionService) { this(session, regionService, new SwiftObjectListService(session, regionService), new SwiftSegmentService(session, regionService), new DefaultFindFeature(session)); }