Skip to content

Commit 46e891d

Browse files
authored
Merge pull request #5 from krishnafkh/develop
Added option to set Compression on the gRPC client - android
2 parents cd7bb95 + e06235b commit 46e891d

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

android/src/main/java/com/reactnativegrpc/GrpcModule.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public class GrpcModule extends ReactContextBaseJavaModule {
3030

3131
private String host;
3232
private boolean isInsecure = false;
33+
private boolean withCompression = false;
34+
private String compressorName = "";
3335
private Integer responseSizeLimit = null;
3436
private ManagedChannel managedChannel = null;
3537

@@ -63,6 +65,12 @@ public void setInsecure(boolean insecure) {
6365
this.isInsecure = insecure;
6466
}
6567

68+
@ReactMethod
69+
public void setCompression(Boolean enable, String compressorName) {
70+
this.withCompression = enable;
71+
this.compressorName = compressorName;
72+
}
73+
6674
@ReactMethod
6775
public void setResponseSizeLimit(int limit) {
6876
this.responseSizeLimit = limit;
@@ -161,6 +169,10 @@ private ClientCall startGrpcCall(int id, String path, MethodDescriptor.MethodTyp
161169

162170
CallOptions callOptions = CallOptions.DEFAULT;
163171

172+
if (!this.compressorName.isEmpty()) {
173+
callOptions = callOptions.withCompression(this.compressorName);
174+
}
175+
164176
ClientCall call = this.getManagedChannel().newCall(descriptor, callOptions);
165177

166178
call.start(new ClientCall.Listener() {
@@ -246,6 +258,10 @@ public void onClose(Status status, Metadata trailers) {
246258
}
247259
}, headersMetadata);
248260

261+
if (this.withCompression) {
262+
call.setMessageCompression(true);
263+
}
264+
249265
return call;
250266
}
251267

src/client.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type GrpcType = {
1818
getIsInsecure: () => Promise<boolean>;
1919
setHost(host: string): void;
2020
setInsecure(insecure: boolean): void;
21+
setCompression(enable: boolean, compressorName: string): void;
2122
setResponseSizeLimit(limitInBytes: number): void;
2223
unaryCall(
2324
id: number,
@@ -178,6 +179,9 @@ export class GrpcClient {
178179
setInsecure(insecure: boolean): void {
179180
Grpc.setInsecure(insecure);
180181
}
182+
setCompression(enable: boolean, compressorName: string): void {
183+
Grpc.setCompression(enable, compressorName);
184+
}
181185
setResponseSizeLimit(limitInBytes: number): void {
182186
Grpc.setResponseSizeLimit(limitInBytes);
183187
}

0 commit comments

Comments
 (0)