Xray-core/infra/conf/grpc.go

44 lines
1.2 KiB
Go
Raw Normal View History

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"`
2021-12-19 16:47:21 +00:00
InitialWindowsSize int32 `json:"initial_windows_size"`
2023-03-26 05:53:42 +00:00
UserAgent string `json:"user_agent"`
2024-12-19 10:45:35 +00:00
MultiConnections int32 `json:"multi_connections"`
}
2021-07-03 08:01:59 +00:00
func (g *GRPCConfig) Build() (proto.Message, error) {
if g.IdleTimeout <= 0 {
g.IdleTimeout = 0
}
if g.HealthCheckTimeout <= 0 {
g.HealthCheckTimeout = 0
}
2021-12-19 16:47:21 +00:00
if g.InitialWindowsSize < 0 {
// default window size of gRPC-go
g.InitialWindowsSize = 0
}
2021-07-03 08:01:59 +00:00
return &grpc.Config{
Authority: g.Authority,
ServiceName: g.ServiceName,
MultiMode: g.MultiMode,
IdleTimeout: g.IdleTimeout,
HealthCheckTimeout: g.HealthCheckTimeout,
PermitWithoutStream: g.PermitWithoutStream,
2021-12-19 16:47:21 +00:00
InitialWindowsSize: g.InitialWindowsSize,
2023-03-26 05:53:42 +00:00
UserAgent: g.UserAgent,
2024-12-19 10:45:35 +00:00
MultiConnections: g.MultiConnections,
2021-07-03 08:01:59 +00:00
}, nil
}