package server import "context" type HandlerOption func(*HandlerOptions) type HandlerOptions struct { Internal bool Metadata map[string]map[string]string } type SubscriberOption func(*SubscriberOptions) type SubscriberOptions struct { Queue string Internal bool Context context.Context } // EndpointMetadata is a Handler option that allows metadata to be added to // individual endpoints. func EndpointMetadata(name string, md map[string]string) HandlerOption { return func(o *HandlerOptions) { o.Metadata[name] = md } } // Internal Handler options specifies that a handler is not advertised // to the discovery system. In the future this may also limit request // to the internal network or authorised user. func InternalHandler(b bool) HandlerOption { return func(o *HandlerOptions) { o.Internal = b } } // Internal Subscriber options specifies that a subscriber is not advertised // to the discovery system. func InternalSubscriber(b bool) SubscriberOption { return func(o *SubscriberOptions) { o.Internal = b } } func NewSubscriberOptions(opts ...SubscriberOption) SubscriberOptions { opt := SubscriberOptions{ Context: context.Background(), } for _, o := range opts { o(&opt) } return opt } // Shared queue name distributed messages across subscribers func SubscriberQueue(n string) SubscriberOption { return func(o *SubscriberOptions) { o.Queue = n } } // SubscriberContext set context options to allow broker SubscriberOption passed func SubscriberContext(ctx context.Context) SubscriberOption { return func(o *SubscriberOptions) { o.Context = ctx } }