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  }