Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ControlHookCleanup ¶
type ControlHookCleanup func()
ControlHookCleanup defines a function used to remove a control hook.
type ControlProcessor ¶
type ControlProcessor func(sc ServiceControl, args ...interface{}) error
ControlProcessor defines a function that is run when a specified control point is reached in the service business logic. The function receives the service instance so internal state can be inspected, plus for any arguments passed to the currently executing service function.
type ServiceControl ¶
type ServiceControl interface {
RegisterControlPoint(name string, controller ControlProcessor) ControlHookCleanup
}
ServiceControl instances allow hooks to be registered for execution at the specified point of execution. The control point name can be a function name or a logical execution point meaningful to the service. If name is "", the hook for the currently executing function is executed. Returns a function which can be used to remove the hook.
type TestService ¶
type TestService struct { ServiceControl // Hooks to run when specified control points are reached in the service business logic. ControlHooks map[string]ControlProcessor }
func (*TestService) ProcessControlHook ¶
func (s *TestService) ProcessControlHook(hookName string, sc ServiceControl, args ...interface{}) error
ProcessControlHook retrieves the ControlProcessor for the specified hook name and runs it, returning any error. Use it like this to invoke a hook registered for some arbitrary control point:
if err := n.ProcessControlHook("foobar", <serviceinstance>, <somearg1>, <somearg2>); err != nil { return err }
func (*TestService) ProcessFunctionHook ¶
func (s *TestService) ProcessFunctionHook(sc ServiceControl, args ...interface{}) error
ProcessFunctionHook runs the ControlProcessor for the current function, returning any error. Use it like this:
if err := n.ProcessFunctionHook(<serviceinstance>, <somearg1>, <somearg2>); err != nil { return err }
func (*TestService) RegisterControlPoint ¶
func (s *TestService) RegisterControlPoint(hookName string, controller ControlProcessor) ControlHookCleanup
RegisterControlPoint assigns the specified controller to the named hook. If nil, any existing controller for the hook is removed. hookName is the name of a function on the service or some arbitrarily named control point.