options.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package micro
  2. import (
  3. "context"
  4. "git.nspix.com/golang/micro/registry"
  5. )
  6. type (
  7. Options struct {
  8. Zone string `json:"zone"`
  9. Name string `json:"name"`
  10. Version string `json:"version"`
  11. EnableHttp bool `json:"enable_http"`
  12. EnableRPC bool `json:"enable_rpc"`
  13. registry registry.Registry
  14. Server Server
  15. Context context.Context
  16. }
  17. Option func(o *Options)
  18. )
  19. func WithName(name string, version string) Option {
  20. return func(o *Options) {
  21. o.Name = name
  22. o.Version = version
  23. }
  24. }
  25. func WithRegistry(r registry.Registry) Option {
  26. return func(o *Options) {
  27. o.registry = r
  28. }
  29. }
  30. func WithServer(s Server) Option {
  31. return func(o *Options) {
  32. o.Server = s
  33. }
  34. }
  35. func WithoutHttp() Option {
  36. return func(o *Options) {
  37. o.EnableHttp = false
  38. }
  39. }
  40. func WithoutRPC() Option {
  41. return func(o *Options) {
  42. o.EnableRPC = false
  43. }
  44. }
  45. func NewOptions() *Options {
  46. return &Options{
  47. Zone: "default",
  48. Version: "1.0.1",
  49. EnableHttp: true,
  50. EnableRPC: true,
  51. Context: context.Background(),
  52. registry: registry.DefaultRegistry,
  53. }
  54. }