
org.yamcs.buckets.RemoteYamcsBucket Maven / Gradle / Ivy
package org.yamcs.buckets;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.Predicate;
import org.yamcs.client.storage.Bucket.ListObjectsOptions;
public class RemoteYamcsBucket implements Bucket {
public static final BucketLocation LOCATION = new BucketLocation("remote-yamcs", "Remote Yamcs");
private String localName;
private org.yamcs.client.storage.Bucket bucketClient;
public RemoteYamcsBucket(String localName, org.yamcs.client.storage.Bucket bucketClient) {
this.localName = localName;
this.bucketClient = bucketClient;
}
@Override
public BucketLocation getLocation() {
return LOCATION;
}
@Override
public String getName() {
return localName;
}
@Override
public CompletableFuture getPropertiesAsync() {
return bucketClient.getInfo().thenApply(BucketProperties::fromBucketInfo);
}
@Override
public void setMaxSize(long maxSize) throws IOException {
// Ignore, managed by remote
}
@Override
public void setMaxObjects(int maxObjects) throws IOException {
// Ignore, managed by remote
}
@Override
public CompletableFuture> listObjectsAsync(String prefix, Predicate p) {
return bucketClient.listObjects(ListObjectsOptions.prefix(prefix)).thenApply(response -> {
return response.getObjectsList().stream()
.map(ObjectProperties::fromObjectInfo)
.filter(p::test)
.toList();
});
}
@Override
public CompletableFuture putObjectAsync(String objectName, String contentType, Map metadata,
byte[] objectData) {
return bucketClient.uploadObject(objectName, objectData);
}
@Override
public CompletableFuture getObjectAsync(String objectName) {
return bucketClient.downloadObject(objectName);
}
@Override
public CompletableFuture deleteObjectAsync(String objectName) {
return bucketClient.deleteObject(objectName);
}
@Override
public CompletableFuture findObjectAsync(String objectName) {
return bucketClient.getObject(objectName)
.thenApply(ObjectProperties::fromObjectInfo);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy