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.java45
-rw-r--r--other/java/client/src/main/proto/filer.proto178
2 files changed, 223 insertions, 0 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
new file mode 100644
index 000000000..47712bc37
--- /dev/null
+++ b/other/java/client/src/main/java/seaweedfs/client/FilerGrpcClient.java
@@ -0,0 +1,45 @@
+package seaweedfs.client;
+
+import io.grpc.ManagedChannel;
+import io.grpc.ManagedChannelBuilder;
+
+import java.util.concurrent.TimeUnit;
+import java.util.logging.Logger;
+
+public class FilerGrpcClient {
+
+ private static final Logger logger = Logger.getLogger(FilerGrpcClient.class.getName());
+
+ private final ManagedChannel channel;
+ private final SeaweedFilerGrpc.SeaweedFilerBlockingStub blockingStub;
+ private final SeaweedFilerGrpc.SeaweedFilerStub asyncStub;
+ private final SeaweedFilerGrpc.SeaweedFilerFutureStub futureStub;
+
+
+ public FilerGrpcClient(String host, int port) {
+ this(ManagedChannelBuilder.forAddress(host, port).usePlaintext());
+ }
+
+ public FilerGrpcClient(ManagedChannelBuilder<?> channelBuilder) {
+ channel = channelBuilder.build();
+ blockingStub = SeaweedFilerGrpc.newBlockingStub(channel);
+ asyncStub = SeaweedFilerGrpc.newStub(channel);
+ futureStub = SeaweedFilerGrpc.newFutureStub(channel);
+ }
+
+ public void shutdown() throws InterruptedException {
+ channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
+ }
+
+ public SeaweedFilerGrpc.SeaweedFilerBlockingStub getBlockingStub() {
+ return blockingStub;
+ }
+
+ public SeaweedFilerGrpc.SeaweedFilerStub getAsyncStub() {
+ return asyncStub;
+ }
+
+ public SeaweedFilerGrpc.SeaweedFilerFutureStub getFutureStub() {
+ return futureStub;
+ }
+}
diff --git a/other/java/client/src/main/proto/filer.proto b/other/java/client/src/main/proto/filer.proto
new file mode 100644
index 000000000..124eabcd2
--- /dev/null
+++ b/other/java/client/src/main/proto/filer.proto
@@ -0,0 +1,178 @@
+syntax = "proto3";
+
+package filer_pb;
+
+option java_package = "seaweedfs.client";
+option java_outer_classname = "FilerProto";
+
+//////////////////////////////////////////////////
+
+service SeaweedFiler {
+
+ rpc LookupDirectoryEntry (LookupDirectoryEntryRequest) returns (LookupDirectoryEntryResponse) {
+ }
+
+ rpc ListEntries (ListEntriesRequest) returns (ListEntriesResponse) {
+ }
+
+ rpc CreateEntry (CreateEntryRequest) returns (CreateEntryResponse) {
+ }
+
+ rpc UpdateEntry (UpdateEntryRequest) returns (UpdateEntryResponse) {
+ }
+
+ rpc DeleteEntry (DeleteEntryRequest) returns (DeleteEntryResponse) {
+ }
+
+ rpc AssignVolume (AssignVolumeRequest) returns (AssignVolumeResponse) {
+ }
+
+ rpc LookupVolume (LookupVolumeRequest) returns (LookupVolumeResponse) {
+ }
+
+ rpc DeleteCollection (DeleteCollectionRequest) returns (DeleteCollectionResponse) {
+ }
+
+ rpc Statistics (StatisticsRequest) returns (StatisticsResponse) {
+ }
+
+}
+
+//////////////////////////////////////////////////
+
+message LookupDirectoryEntryRequest {
+ string directory = 1;
+ string name = 2;
+}
+
+message LookupDirectoryEntryResponse {
+ Entry entry = 1;
+}
+
+message ListEntriesRequest {
+ string directory = 1;
+ string prefix = 2;
+ string startFromFileName = 3;
+ bool inclusiveStartFrom = 4;
+ uint32 limit = 5;
+}
+
+message ListEntriesResponse {
+ repeated Entry entries = 1;
+}
+
+message Entry {
+ string name = 1;
+ bool is_directory = 2;
+ repeated FileChunk chunks = 3;
+ FuseAttributes attributes = 4;
+ map<string, bytes> extended = 5;
+}
+
+message EventNotification {
+ Entry old_entry = 1;
+ Entry new_entry = 2;
+ bool delete_chunks = 3;
+}
+
+message FileChunk {
+ string file_id = 1;
+ int64 offset = 2;
+ uint64 size = 3;
+ int64 mtime = 4;
+ string e_tag = 5;
+ string source_file_id = 6;
+}
+
+message FuseAttributes {
+ uint64 file_size = 1;
+ int64 mtime = 2; // unix time in seconds
+ uint32 file_mode = 3;
+ uint32 uid = 4;
+ uint32 gid = 5;
+ int64 crtime = 6; // unix time in seconds
+ string mime = 7;
+ string replication = 8;
+ string collection = 9;
+ int32 ttl_sec = 10;
+ string user_name = 11; // for hdfs
+ repeated string group_name = 12; // for hdfs
+}
+
+message CreateEntryRequest {
+ string directory = 1;
+ Entry entry = 2;
+}
+
+message CreateEntryResponse {
+}
+
+message UpdateEntryRequest {
+ string directory = 1;
+ Entry entry = 2;
+}
+message UpdateEntryResponse {
+}
+
+message DeleteEntryRequest {
+ string directory = 1;
+ string name = 2;
+ bool is_directory = 3;
+ bool is_delete_data = 4;
+ bool is_recursive = 5;
+}
+
+message DeleteEntryResponse {
+}
+
+message AssignVolumeRequest {
+ int32 count = 1;
+ string collection = 2;
+ string replication = 3;
+ int32 ttl_sec = 4;
+ string data_center = 5;
+}
+
+message AssignVolumeResponse {
+ string file_id = 1;
+ string url = 2;
+ string public_url = 3;
+ int32 count = 4;
+}
+
+message LookupVolumeRequest {
+ repeated string volume_ids = 1;
+}
+
+message Locations {
+ repeated Location locations = 1;
+}
+
+message Location {
+ string url = 1;
+ string public_url = 2;
+}
+message LookupVolumeResponse {
+ map<string, Locations> locations_map = 1;
+}
+
+message DeleteCollectionRequest {
+ string collection = 1;
+}
+
+message DeleteCollectionResponse {
+}
+
+message StatisticsRequest {
+ string replication = 1;
+ string collection = 2;
+ string ttl = 3;
+}
+message StatisticsResponse {
+ string replication = 1;
+ string collection = 2;
+ string ttl = 3;
+ uint64 total_size = 4;
+ uint64 used_size = 5;
+ uint64 file_count = 6;
+}