aboutsummaryrefslogtreecommitdiff
path: root/other/java/client/src
diff options
context:
space:
mode:
Diffstat (limited to 'other/java/client/src')
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java28
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java8
-rw-r--r--other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java8
3 files changed, 22 insertions, 22 deletions
diff --git a/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java b/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java
index 8a37827f1..6c57e2e0d 100644
--- a/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java
+++ b/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java
@@ -9,16 +9,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLException;
-import java.util.Map;
import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.TimeUnit;
public class FilerGrpcClient {
- public final int VOLUME_SERVER_ACCESS_DIRECT = 0;
- public final int VOLUME_SERVER_ACCESS_PUBLIC_URL = 1;
- public final int VOLUME_SERVER_ACCESS_FILER_PROXY = 2;
-
private static final Logger logger = LoggerFactory.getLogger(FilerGrpcClient.class);
static SslContext sslContext;
@@ -30,6 +26,9 @@ public class FilerGrpcClient {
}
}
+ public final int VOLUME_SERVER_ACCESS_DIRECT = 0;
+ public final int VOLUME_SERVER_ACCESS_PUBLIC_URL = 1;
+ public final int VOLUME_SERVER_ACCESS_FILER_PROXY = 2;
public final Map<String, FilerProto.Locations> vidLocations = new HashMap<>();
private final ManagedChannel channel;
private final SeaweedFilerGrpc.SeaweedFilerBlockingStub blockingStub;
@@ -55,7 +54,7 @@ public class FilerGrpcClient {
.negotiationType(NegotiationType.TLS)
.sslContext(sslContext));
- filerAddress = String.format("%s:%d", host, grpcPort-10000);
+ filerAddress = String.format("%s:%d", host, grpcPort - 10000);
FilerProto.GetFilerConfigurationResponse filerConfigurationResponse =
this.getBlockingStub().getFilerConfiguration(
@@ -104,23 +103,36 @@ public class FilerGrpcClient {
public void setAccessVolumeServerDirectly() {
this.volumeServerAccess = VOLUME_SERVER_ACCESS_DIRECT;
}
+
public boolean isAccessVolumeServerDirectly() {
return this.volumeServerAccess == VOLUME_SERVER_ACCESS_DIRECT;
}
+
public void setAccessVolumeServerByPublicUrl() {
this.volumeServerAccess = VOLUME_SERVER_ACCESS_PUBLIC_URL;
}
+
public boolean isAccessVolumeServerByPublicUrl() {
return this.volumeServerAccess == VOLUME_SERVER_ACCESS_PUBLIC_URL;
}
+
public void setAccessVolumeServerByFilerProxy() {
this.volumeServerAccess = VOLUME_SERVER_ACCESS_FILER_PROXY;
}
+
public boolean isAccessVolumeServerByFilerProxy() {
return this.volumeServerAccess == VOLUME_SERVER_ACCESS_FILER_PROXY;
}
- public String getFilerAddress() {
- return this.filerAddress;
+
+ public String getChunkUrl(String chunkId, String url, String publicUrl) {
+ switch (this.volumeServerAccess) {
+ case VOLUME_SERVER_ACCESS_PUBLIC_URL:
+ return String.format("http://%s/%s", publicUrl, chunkId);
+ case VOLUME_SERVER_ACCESS_FILER_PROXY:
+ return String.format("http://%s/?proxyChunkId=%s", this.filerAddress, chunkId);
+ default:
+ return String.format("http://%s/%s", url, chunkId);
+ }
}
}
diff --git a/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java b/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
index a70553762..e55c5b7aa 100644
--- a/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
+++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedRead.java
@@ -116,13 +116,7 @@ public class SeaweedRead {
IOException lastException = null;
for (long waitTime = 1000L; waitTime < 10 * 1000; waitTime += waitTime / 2) {
for (FilerProto.Location location : locations.getLocationsList()) {
- String host = location.getUrl();
- if (filerGrpcClient.isAccessVolumeServerByPublicUrl()) {
- host = location.getPublicUrl();
- } else if (filerGrpcClient.isAccessVolumeServerByFilerProxy()) {
- host = filerGrpcClient.getFilerAddress();
- }
- String url = String.format("http://%s/%s", host, chunkView.fileId);
+ String url = filerGrpcClient.getChunkUrl(chunkView.fileId, location.getUrl(), location.getPublicUrl());
try {
data = doFetchOneFullChunkData(chunkView, url);
lastException = null;
diff --git a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
index 3cc11e21c..db3cc3931 100644
--- a/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
+++ b/other/java/client/src/main/java/seaweedfs/client/SeaweedWrite.java
@@ -53,13 +53,7 @@ public class SeaweedWrite {
String fileId = response.getFileId();
String auth = response.getAuth();
- String host = response.getUrl();
- if (filerGrpcClient.isAccessVolumeServerByPublicUrl()) {
- host = response.getPublicUrl();
- } else if (filerGrpcClient.isAccessVolumeServerByFilerProxy()) {
- host = filerGrpcClient.getFilerAddress();
- }
- String targetUrl = String.format("http://%s/%s", host, fileId);
+ String targetUrl = filerGrpcClient.getChunkUrl(fileId, response.getUrl(), response.getPublicUrl());
ByteString cipherKeyString = com.google.protobuf.ByteString.EMPTY;
byte[] cipherKey = null;