|
|
@ -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); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |