Convenience settings for Broker, Registry, Transport and Wrappers
This commit is contained in:
parent
ca91a8383e
commit
d1a6126350
55
options.go
55
options.go
@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/micro/go-micro/client"
|
"github.com/micro/go-micro/client"
|
||||||
"github.com/micro/go-micro/cmd"
|
"github.com/micro/go-micro/cmd"
|
||||||
"github.com/micro/go-micro/registry"
|
"github.com/micro/go-micro/registry"
|
||||||
|
"github.com/micro/go-micro/selector"
|
||||||
"github.com/micro/go-micro/server"
|
"github.com/micro/go-micro/server"
|
||||||
"github.com/micro/go-micro/transport"
|
"github.com/micro/go-micro/transport"
|
||||||
|
|
||||||
@ -54,6 +55,9 @@ func newOptions(opts ...Option) Options {
|
|||||||
func Broker(b broker.Broker) Option {
|
func Broker(b broker.Broker) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
o.Broker = b
|
o.Broker = b
|
||||||
|
// Update Client and Server
|
||||||
|
o.Client.Init(client.Broker(b))
|
||||||
|
o.Server.Init(server.Broker(b))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,15 +79,27 @@ func Server(s server.Server) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Registry sets the registry for the service
|
||||||
|
// and the underlying components
|
||||||
func Registry(r registry.Registry) Option {
|
func Registry(r registry.Registry) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
o.Registry = r
|
o.Registry = r
|
||||||
|
// Update Client and Server
|
||||||
|
o.Client.Init(client.Registry(r))
|
||||||
|
o.Server.Init(server.Registry(r))
|
||||||
|
// Update Selector
|
||||||
|
o.Client.Options().Selector.Init(selector.Registry(r))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Transport sets the transport for the service
|
||||||
|
// and the underlying components
|
||||||
func Transport(t transport.Transport) Option {
|
func Transport(t transport.Transport) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
o.Transport = t
|
o.Transport = t
|
||||||
|
// Update Client and Server
|
||||||
|
o.Client.Init(client.Transport(t))
|
||||||
|
o.Server.Init(server.Transport(t))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,6 +150,45 @@ func RegisterInterval(t time.Duration) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WrapClient is a convenience method for wrapping a Client with
|
||||||
|
// some middleware component. A list of wrappers can be provided.
|
||||||
|
func WrapClient(w ...client.Wrapper) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
// apply in reverse
|
||||||
|
for i := len(w); i > 0; i-- {
|
||||||
|
o.Client = w[i](o.Client)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WrapHandler adds a handler Wrapper to a list of options passed into the server
|
||||||
|
func WrapHandler(w ...server.HandlerWrapper) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
var wrappers []server.Option
|
||||||
|
|
||||||
|
for _, wrap := range w {
|
||||||
|
wrappers = append(wrappers, server.WrapHandler(wrap))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init once
|
||||||
|
o.Server.Init(wrappers...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WrapSubscriber adds a subscriber Wrapper to a list of options passed into the server
|
||||||
|
func WrapSubscriber(w ...server.SubscriberWrapper) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
var wrappers []server.Option
|
||||||
|
|
||||||
|
for _, wrap := range w {
|
||||||
|
wrappers = append(wrappers, server.WrapSubscriber(wrap))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init once
|
||||||
|
o.Server.Init(wrappers...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Before and Afters
|
// Before and Afters
|
||||||
|
|
||||||
func BeforeStart(fn func() error) Option {
|
func BeforeStart(fn func() error) Option {
|
||||||
|
Loading…
Reference in New Issue
Block a user