2021-03-14 17:02:07 +02:00
|
|
|
package conf
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/golang/protobuf/proto"
|
|
|
|
|
|
|
|
"github.com/xtls/xray-core/transport/internet/grpc"
|
|
|
|
)
|
|
|
|
|
|
|
|
type GRPCConfig struct {
|
2021-07-05 16:25:21 +03:00
|
|
|
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 18:47:21 +02:00
|
|
|
InitialWindowsSize int32 `json:"initial_windows_size"`
|
2021-03-14 17:02:07 +02:00
|
|
|
}
|
|
|
|
|
2021-07-03 11:01:59 +03: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 18:47:21 +02:00
|
|
|
if g.InitialWindowsSize < 0 {
|
|
|
|
// default window size of gRPC-go
|
|
|
|
g.InitialWindowsSize = 0
|
|
|
|
}
|
|
|
|
|
2021-07-03 11:01:59 +03:00
|
|
|
return &grpc.Config{
|
2021-07-05 16:25:21 +03:00
|
|
|
ServiceName: g.ServiceName,
|
|
|
|
MultiMode: g.MultiMode,
|
|
|
|
IdleTimeout: g.IdleTimeout,
|
|
|
|
HealthCheckTimeout: g.HealthCheckTimeout,
|
|
|
|
PermitWithoutStream: g.PermitWithoutStream,
|
2021-12-19 18:47:21 +02:00
|
|
|
InitialWindowsSize: g.InitialWindowsSize,
|
2021-07-03 11:01:59 +03:00
|
|
|
}, nil
|
2021-03-14 17:02:07 +02:00
|
|
|
}
|