Documentation
¶
Overview ¶
Package dispatch provides a general purpose object dispatcher. It can be used to asynchronously dispatch queues (channels) or synchronously dispatch single objects. For example one could use it to dispatch events or messages.
Index ¶
- type Dispatcher
- func (d *Dispatcher) AddQueues(queues ...chan interface{})
- func (d *Dispatcher) Dispatch(object interface{})
- func (d *Dispatcher) RegisterHandler(handler interface{})
- func (d *Dispatcher) RemoveAllQueues()
- func (d *Dispatcher) RemoveQueues(queues ...chan interface{}) error
- func (d *Dispatcher) SyncAllQueues()
- func (d *Dispatcher) SyncQueues(queues ...chan interface{}) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Dispatcher ¶
type Dispatcher struct {
// contains filtered or unexported fields
}
Dispatcher is used to register handlers and dispatch objects.
func (*Dispatcher) AddQueues ¶
func (d *Dispatcher) AddQueues(queues ...chan interface{})
AddQueues adds channels as 'object-queues'. All objects sent to the passed queues will be dispatched to their handlers in a separate go routine per channel.
func (*Dispatcher) Dispatch ¶
func (d *Dispatcher) Dispatch(object interface{})
Dispatch dispatches an object to all it's handlers in the order in which the handlers were registered.
func (*Dispatcher) RegisterHandler ¶
func (d *Dispatcher) RegisterHandler(handler interface{})
RegisterHandler registers an object handler (func) for the type of objects assignable to it's input parameter type. If the handler registers a new handler in the function body, the new handler will only be active for new Dispatch() calls. Calling this method clears the internal type/handler mapping cache for interface handlers.
func (*Dispatcher) RemoveAllQueues ¶
func (d *Dispatcher) RemoveAllQueues()
RemoveAllQueues removes all queues from the Dispatcher without closing them.
func (*Dispatcher) RemoveQueues ¶
func (d *Dispatcher) RemoveQueues(queues ...chan interface{}) error
RemoveQueues removes the given queues from the Dispatcher without closing them.
func (*Dispatcher) SyncAllQueues ¶
func (d *Dispatcher) SyncAllQueues()
SyncAllQueues calls SyncQueues() for all queues in this Dispatcher.
func (*Dispatcher) SyncQueues ¶
func (d *Dispatcher) SyncQueues(queues ...chan interface{}) error
SyncQueues syncs the channels dispatch routines to the current go routine. This ensures all objects received in the passed channels up to this point will be handled before continuing.