ru.tinkoff.kora.grpc.server.DynamicServerInterceptor Maven / Gradle / Ivy
The newest version!
package ru.tinkoff.kora.grpc.server;
import io.grpc.Metadata;
import io.grpc.ServerCall;
import io.grpc.ServerCallHandler;
import io.grpc.ServerInterceptor;
import ru.tinkoff.kora.application.graph.RefreshListener;
import ru.tinkoff.kora.application.graph.ValueOf;
public final class DynamicServerInterceptor implements ServerInterceptor, RefreshListener {
private volatile ServerInterceptor interceptor;
private final ValueOf interceptorNode;
public DynamicServerInterceptor(ValueOf interceptor) {
this.interceptorNode = interceptor;
this.interceptor = interceptor.get();
}
@Override
public ServerCall.Listener interceptCall(ServerCall call, Metadata headers, ServerCallHandler next) {
return interceptor.interceptCall(call, headers, next);
}
@Override
public void graphRefreshed() {
this.interceptor = interceptorNode.get();
}
}