| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package conf
- import (
- "github.com/xtls/xray-core/transport/internet/grpc"
- "google.golang.org/protobuf/proto"
- )
- type GRPCConfig struct {
- Authority string `json:"authority"`
- ServiceName string `json:"serviceName"`
- MultiMode bool `json:"multiMode"`
- IdleTimeout int32 `json:"idle_timeout"`
- HealthCheckTimeout int32 `json:"health_check_timeout"`
- PermitWithoutStream bool `json:"permit_without_stream"`
- InitialWindowsSize int32 `json:"initial_windows_size"`
- UserAgent string `json:"user_agent"`
- }
- func (g *GRPCConfig) Build() (proto.Message, error) {
- if g.IdleTimeout <= 0 {
- g.IdleTimeout = 0
- }
- if g.HealthCheckTimeout <= 0 {
- g.HealthCheckTimeout = 0
- }
- if g.InitialWindowsSize < 0 {
- // default window size of gRPC-go
- g.InitialWindowsSize = 0
- }
- return &grpc.Config{
- Authority: g.Authority,
- ServiceName: g.ServiceName,
- MultiMode: g.MultiMode,
- IdleTimeout: g.IdleTimeout,
- HealthCheckTimeout: g.HealthCheckTimeout,
- PermitWithoutStream: g.PermitWithoutStream,
- InitialWindowsSize: g.InitialWindowsSize,
- UserAgent: g.UserAgent,
- }, nil
- }
|