Update FileSponge

This commit is contained in:
Andrea Cavalli 2021-03-08 13:42:52 +01:00
parent f0eba9f4f4
commit aeba994347

View File

@ -52,10 +52,12 @@ public class FileSponge implements URLsHandler {
public Flux<DataBlock> requestContent(URL url) { public Flux<DataBlock> requestContent(URL url) {
return Flux return Flux
.fromIterable(cacheAccess) .fromIterable(cacheAccess)
.flatMap(urlsHandler -> urlsHandler.requestContent(url)) .map(urlsHandler -> urlsHandler.requestContent(url))
.collectList()
.flatMapMany(Flux::firstWithValue)
.switchIfEmpty(Flux .switchIfEmpty(Flux
.fromIterable(urlsHandlers) .fromIterable(urlsHandlers)
.flatMap(urlsHandler -> urlsHandler .map(urlsHandler -> urlsHandler
.requestContent(url) .requestContent(url)
.flatMapSequential(dataBlock -> Flux .flatMapSequential(dataBlock -> Flux
.fromIterable(cacheWrite) .fromIterable(cacheWrite)
@ -63,18 +65,22 @@ public class FileSponge implements URLsHandler {
.then(Mono.just(dataBlock)) .then(Mono.just(dataBlock))
) )
) )
.collectList()
.flatMapMany(Flux::firstWithValue)
) )
.distinct(DataBlock::getId); .distinct(DataBlock::getId);
} }
@Override @Override
public Mono<Metadata> requestMetadata(URL url) { public Mono<Metadata> requestMetadata(URL url) {
return Mono.from(Flux return Flux
.fromIterable(cacheAccess) .fromIterable(cacheAccess)
.flatMap(urlsHandler -> urlsHandler.requestMetadata(url)) .map(urlsHandler -> urlsHandler.requestMetadata(url))
.collectList()
.flatMap(Mono::firstWithValue)
.switchIfEmpty(Flux .switchIfEmpty(Flux
.fromIterable(urlsHandlers) .fromIterable(urlsHandlers)
.flatMap(urlsHandler -> urlsHandler .map(urlsHandler -> urlsHandler
.requestMetadata(url) .requestMetadata(url)
.flatMap(dataBlock -> Flux .flatMap(dataBlock -> Flux
.fromIterable(cacheWrite) .fromIterable(cacheWrite)
@ -82,6 +88,8 @@ public class FileSponge implements URLsHandler {
.then(Mono.just(dataBlock)) .then(Mono.just(dataBlock))
) )
) )
)); .collectList()
} .flatMap(Mono::firstWithValue)
);
}
} }