options.go 1.0 KB

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