router
packageAPI reference for the router
package.
Imports
(6)context
INT
github.com/mirkobrombin/go-module-router/v2/pkg/core
INT
github.com/mirkobrombin/go-module-router/v2/pkg/logger
INT
github.com/mirkobrombin/go-module-router/v2/pkg/transport/action
INT
github.com/mirkobrombin/go-module-router/v2/pkg/transport/http
PKG
github.com/mirkobrombin/go-signal/v2/pkg/bus
Handler
Re-export core types for convenience
type Handler core.Handler
Pattern
type Pattern core.Pattern
Meta
Meta is an alias for Pattern (backward compatibility with HTTP examples)
type Meta core.Pattern
HTTP
HTTP creates a new HTTP transport.
Returns
func HTTP() *http.Transport
{
return http.New()
}
Action
Action creates a new Action transport for GUI/CLI apps.
Returns
func Action() *action.Transport
{
return action.New()
}
Router
Router is a convenience wrapper that provides both transports.
type Router struct
Methods
SetLogger sets the logger for all transports.
Parameters
func (*Router) SetLogger(l logger.Logger)
{
r.Logger = l
r.HTTP.Logger = l
r.Action.Logger = l
}
SetBus sets the event bus for action-based dispatching.
Parameters
func (*Router) SetBus(b *bus.Bus)
{
r.Action.Bus = b
}
Provide registers a dependency in all transports.
Parameters
func (*Router) Provide(name string, instance any)
{
r.HTTP.Provide(name, instance)
r.Action.Provide(name, instance)
}
Register registers a handler in the appropriate transport based on tags.
Parameters
func (*Router) Register(prototype Handler)
{
// For now, register in both if applicable
// TODO: Detect which transport based on tags
defer func() { recover() }()
r.HTTP.Register(prototype)
}
RegisterAction registers an action handler.
Parameters
func (*Router) RegisterAction(prototype Handler)
{
r.Action.Register(prototype)
}
Listen starts the HTTP transport.
Parameters
Returns
func (*Router) Listen(addr string) error
{
return r.HTTP.Listen(addr)
}
Dispatch dispatches an action with an optional payload.
Parameters
Returns
func (*Router) Dispatch(ctx context.Context, action string, payload ...any) (any, error)
{
return r.Action.Dispatch(ctx, action, payload...)
}
DispatchKey dispatches an action by keybinding.
Parameters
Returns
func (*Router) DispatchKey(ctx context.Context, key string) (any, error)
{
return r.Action.DispatchKey(ctx, key)
}
Fields
| Name | Type | Description |
|---|---|---|
| HTTP | *http.Transport | |
| Action | *action.Transport | |
| Logger | logger.Logger |
New
New creates a new multi-transport router.
Returns
func New() *Router
{
return &Router{
HTTP: http.New(),
Action: action.New(),
Logger: logger.Nop,
}
}