grpc.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package conf
  2. import (
  3. "github.com/xtls/xray-core/transport/internet/grpc"
  4. "google.golang.org/protobuf/proto"
  5. )
  6. type GRPCConfig struct {
  7. Authority string `json:"authority"`
  8. ServiceName string `json:"serviceName"`
  9. MultiMode bool `json:"multiMode"`
  10. IdleTimeout int32 `json:"idle_timeout"`
  11. HealthCheckTimeout int32 `json:"health_check_timeout"`
  12. PermitWithoutStream bool `json:"permit_without_stream"`
  13. InitialWindowsSize int32 `json:"initial_windows_size"`
  14. UserAgent string `json:"user_agent"`
  15. }
  16. func (g *GRPCConfig) Build() (proto.Message, error) {
  17. if g.IdleTimeout <= 0 {
  18. g.IdleTimeout = 0
  19. }
  20. if g.HealthCheckTimeout <= 0 {
  21. g.HealthCheckTimeout = 0
  22. }
  23. if g.InitialWindowsSize < 0 {
  24. // default window size of gRPC-go
  25. g.InitialWindowsSize = 0
  26. }
  27. return &grpc.Config{
  28. Authority: g.Authority,
  29. ServiceName: g.ServiceName,
  30. MultiMode: g.MultiMode,
  31. IdleTimeout: g.IdleTimeout,
  32. HealthCheckTimeout: g.HealthCheckTimeout,
  33. PermitWithoutStream: g.PermitWithoutStream,
  34. InitialWindowsSize: g.InitialWindowsSize,
  35. UserAgent: g.UserAgent,
  36. }, nil
  37. }