github.com/argoproj/argo-cd/v3@v3.2.1/util/grpc/interceptor.go (about) 1 package grpc 2 3 import ( 4 "context" 5 6 grpc_retry "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/retry" 7 "google.golang.org/grpc" 8 ) 9 10 func RetryOnlyForServerStreamInterceptor(retryOpts ...grpc_retry.CallOption) grpc.StreamClientInterceptor { 11 return func( 12 ctx context.Context, 13 desc *grpc.StreamDesc, 14 cc *grpc.ClientConn, 15 method string, 16 streamer grpc.Streamer, 17 opts ...grpc.CallOption, 18 ) (grpc.ClientStream, error) { 19 if desc.ServerStreams && !desc.ClientStreams { 20 return grpc_retry.StreamClientInterceptor(retryOpts...)(ctx, desc, cc, method, streamer, opts...) 21 } 22 return streamer(ctx, desc, cc, method, opts...) 23 } 24 }