Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RepackGRPCErrorWithDetails ¶
RepackGRPCErrorWithDetails extracts *status.Status and formats ErrorInfo details into a single error
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client holds the gRPC connection and services
func NewClient ¶
func NewClient(cfg *ClientConfig) (*Client, error)
NewClient initializes and returns a new gRPC client
type ClientConfig ¶
type ClientConfig struct {
// URL is the URL of the gRPC server
URL string `mapstructure:"URL"`
// MinConnectTimeout is the minimum time to wait for a connection to be established
// This is used to prevent the client from hanging indefinitely if the server is unreachable.
MinConnectTimeout types.Duration `mapstructure:"MinConnectTimeout"`
// RequestTimeout is the timeout for individual requests
RequestTimeout types.Duration `mapstructure:"RequestTimeout"`
// UseTLS indicates whether to use TLS for the gRPC connection
UseTLS bool `mapstructure:"UseTLS"`
// Retry represents the retry configuration
Retry *RetryConfig `mapstructure:"Retry"`
}
ClientConfig is the configuration for the gRPC client
func DefaultConfig ¶
func DefaultConfig() *ClientConfig
DefaultConfig returns a default configuration for the gRPC client
func (*ClientConfig) String ¶
func (c *ClientConfig) String() string
String returns a string representation of the gRPC client configuration
func (*ClientConfig) Validate ¶
func (c *ClientConfig) Validate() error
Validate checks if the gRPC client configuration is valid. It returns an error if any of the required fields are missing or invalid.
type GRPCError ¶
GRPCError represents an error structure used in gRPC communication. It contains the error code, a descriptive message, and optional details providing additional context about the error.
type Method ¶
type Method struct {
// ServiceName identifies gRPC service name (alongside package)
ServiceName string `mapstructure:"Service"`
// MethodName denotes gRPC function name
MethodName string `mapstructure:"Method"` // optional
}
Method describes the gRPC service name and method name
type MethodConfig ¶
type MethodConfig struct {
// List of service/method pairs this config applies to.
Name []MethodName `json:"name"`
// Optional retry policy to apply to the specified methods.
RetryPolicy *RetryPolicy `json:"retryPolicy"`
}
MethodConfig defines behavior overrides (e.g., retry policy) for specific RPC methods or services.
type MethodName ¶
type MethodName struct {
// Optional: Match all methods of a specific service if Method is empty.
Service string `json:"service,omitempty"`
// Optional: Match a specific method of the given service.
Method string `json:"method,omitempty"`
}
MethodName identifies a gRPC method or service that the retry policy should apply to. Either Service or Method may be empty for wildcard matching.
type RetryConfig ¶
type RetryConfig struct {
// InitialBackoff is the initial delay before retrying a request
InitialBackoff types.Duration `mapstructure:"InitialBackoff"`
// MaxBackoff is the maximum backoff duration for retries
MaxBackoff types.Duration `mapstructure:"MaxBackoff"`
// BackoffMultiplier is the multiplier for the backoff duration
BackoffMultiplier float64 `mapstructure:"BackoffMultiplier"`
// MaxAttempts is the maximum number of retries for a request
MaxAttempts int `mapstructure:"MaxAttempts"`
// Excluded captures functions which are excluded from retry policies
Excluded []Method `mapstructure:"Excluded"`
}
RetryConfig denotes the gRPC retry policy
func (*RetryConfig) String ¶
func (r *RetryConfig) String() string
func (*RetryConfig) Validate ¶
func (r *RetryConfig) Validate() error
Validate checks if the gRPC retry configuration is valid. It returns an error if any of the required fields are missing or invalid.
type RetryPolicy ¶
type RetryPolicy struct {
// Maximum number of attempts (initial + retries).
MaxAttempts int `json:"maxAttempts"`
// Delay before first retry (e.g., "0.1s").
InitialBackoff string `json:"initialBackoff"`
// Maximum delay between retries (e.g., "2s").
MaxBackoff string `json:"maxBackoff"`
// Multiplier for exponential backoff (e.g., 2.0).
BackoffMultiplier float64 `json:"backoffMultiplier"`
// gRPC status codes that are considered retryable (e.g., "UNAVAILABLE").
RetryableStatusCodes []string `json:"retryableStatusCodes"`
}
RetryPolicy specifies how failed RPCs should be retried, including delays and allowed status codes.
type ServiceConfig ¶
type ServiceConfig struct {
// List of method-specific configurations.
MethodConfig []MethodConfig `json:"methodConfig"`
}
ServiceConfig represents the top-level configuration for service method behaviors, including retry policies. It mirrors the gRPC service configuration format.