Skip to content

Commit e8afcbc

Browse files
Default timeout interceptor (#66)
* chore: add default timeout interceptor * refactor: remove unused slf4j
1 parent bc147b5 commit e8afcbc

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.hypertrace.core.grpcutils.client;
2+
3+
import static java.util.Objects.isNull;
4+
5+
import io.grpc.CallOptions;
6+
import io.grpc.Channel;
7+
import io.grpc.ClientCall;
8+
import io.grpc.ClientInterceptor;
9+
import io.grpc.Context;
10+
import io.grpc.MethodDescriptor;
11+
import java.time.Duration;
12+
import java.util.concurrent.TimeUnit;
13+
import javax.annotation.Nonnull;
14+
import lombok.AllArgsConstructor;
15+
16+
@AllArgsConstructor
17+
public class DefaultTimeoutClientInterceptor implements ClientInterceptor {
18+
private final @Nonnull Duration defaultTimeout;
19+
20+
@Override
21+
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
22+
MethodDescriptor<ReqT, RespT> methodDescriptor, CallOptions providedOptions, Channel next) {
23+
24+
if (isNull(providedOptions.getDeadline()) && isNull(Context.current().getDeadline())) {
25+
return next.newCall(
26+
methodDescriptor,
27+
providedOptions.withDeadlineAfter(defaultTimeout.toMillis(), TimeUnit.MILLISECONDS));
28+
}
29+
30+
return next.newCall(methodDescriptor, providedOptions);
31+
}
32+
}

0 commit comments

Comments
 (0)