mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.1 KiB
41 lines
1.1 KiB
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 |
|
}
|
|
|