Documentation ¶
Overview ¶
Contains design patterns for the standard lifecycle of objects (opened, closed, openable, closable, runnable). Helper classes for lifecycle provisioning.
Index ¶
- type FixedRateTimer
- func (c *FixedRateTimer) Callback() func()
- func (c *FixedRateTimer) Close(correlationId string) error
- func (c *FixedRateTimer) Delay() int
- func (c *FixedRateTimer) Interval() int
- func (c *FixedRateTimer) IsStarted() bool
- func (c *FixedRateTimer) SetCallback(value func())
- func (c *FixedRateTimer) SetDelay(value int)
- func (c *FixedRateTimer) SetInterval(value int)
- func (c *FixedRateTimer) SetTask(value INotifiable)
- func (c *FixedRateTimer) Start()
- func (c *FixedRateTimer) Stop()
- func (c *FixedRateTimer) Task() INotifiable
- type ICleanable
- type IClosable
- type IExecutable
- type INotifiable
- type IOpenable
- type IParameterized
- type Parameters
- func NewEmptyParameters() *Parameters
- func NewParameters(values map[string]interface{}) *Parameters
- func NewParametersFromConfig(config *config.ConfigParams) *Parameters
- func NewParametersFromMaps(maps ...map[string]interface{}) *Parameters
- func NewParametersFromTuples(tuples ...interface{}) *Parameters
- func NewParametersFromTuplesArray(tuples []interface{}) *Parameters
- func NewParametersFromValue(value interface{}) *Parameters
- func (c *Parameters) AssignTo(value interface{})
- func (c *Parameters) Clone() interface{}
- func (c *Parameters) Contains(key string) bool
- func (c *Parameters) Get(key string) interface{}
- func (c *Parameters) GetAsNullableParameters(key string) *Parameters
- func (c *Parameters) GetAsParameters(key string) *Parameters
- func (c *Parameters) GetAsParametersWithDefault(key string, defaultValue *Parameters) *Parameters
- func (c *Parameters) Omit(paths ...string) *Parameters
- func (c *Parameters) Override(parameters *Parameters, recursive bool) *Parameters
- func (c *Parameters) Pick(paths ...string) *Parameters
- func (c *Parameters) Put(key string, value interface{})
- func (c *Parameters) Remove(key string)
- func (c *Parameters) SetDefaults(defaultParameters *Parameters, recursive bool) *Parameters
- type TCleaner
- type TCloser
- type TExecutor
- type TNotifier
- type TOpener
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FixedRateTimer ¶
type FixedRateTimer struct {
// contains filtered or unexported fields
}
Timer that is triggered in equal time intervals.
It has summetric cross-language implementation and is often used by Pip.Services toolkit to perform periodic processing and cleanup in microservices.
see INotifiable
Example:
type MyComponent { timer FixedRateTimer } ... func (mc* MyComponent) open(correlationId string) { ... mc.timer = NewFixedRateTimerFromCallback(() => { this.cleanup }, 60000, 0); mc.timer.start(); ... } func (mc* MyComponent) open(correlationId: string){ ... mc.timer.stop(); ... }
func NewFixedRateTimer ¶
func NewFixedRateTimer() *FixedRateTimer
Creates new instance of the timer and sets its values. Returns *FixedRateTimer
func NewFixedRateTimerFromCallback ¶
func NewFixedRateTimerFromCallback(callback func(), interval int, delay int) *FixedRateTimer
Creates new instance of the timer and sets its values. Parameters:
- callback func() callback function to call when timer is triggered.
- interval int an interval to trigger timer in milliseconds.
- delay int a delay before the first triggering in milliseconds.
Returns *FixedRateTimer
func NewFixedRateTimerFromTask ¶
func NewFixedRateTimerFromTask(task INotifiable, interval int, delay int) *FixedRateTimer
Creates new instance of the timer and sets its values. Parameters:
- callback INotifiable Notifiable object to call when timer is triggered.
- interval int an interval to trigger timer in milliseconds.
- delay int a delay before the first triggering in milliseconds.
Returns *FixedRateTimer
func (*FixedRateTimer) Callback ¶
func (c *FixedRateTimer) Callback() func()
Gets the callback function that is called when this timer is triggered. Returns function the callback function or null if it is not set. Returns func()
func (*FixedRateTimer) Close ¶
func (c *FixedRateTimer) Close(correlationId string) error
Closes the timer. This is required by ICloseable interface, but besides that it is identical to stop(). Parameters:
- correlationId: string transaction id to trace execution through call chain.
Returns error
func (*FixedRateTimer) Delay ¶
func (c *FixedRateTimer) Delay() int
Gets initial delay before the timer is triggered for the first time. Returns number the delay in milliseconds.
func (*FixedRateTimer) Interval ¶
func (c *FixedRateTimer) Interval() int
Gets periodic timer triggering interval. Returns number the interval in milliseconds
func (*FixedRateTimer) IsStarted ¶
func (c *FixedRateTimer) IsStarted() bool
Checks if the timer is started. Returns bool true if the timer is started and false if it is stopped.
func (*FixedRateTimer) SetCallback ¶
func (c *FixedRateTimer) SetCallback(value func())
Sets the callback function that is called when this timer is triggered. Parameters:
- value func() the callback function to be called.
func (*FixedRateTimer) SetDelay ¶
func (c *FixedRateTimer) SetDelay(value int)
Sets initial delay before the timer is triggered for the first time. Parameters:
- value int a delay in milliseconds.
func (*FixedRateTimer) SetInterval ¶
func (c *FixedRateTimer) SetInterval(value int)
Sets periodic timer triggering interval. Parameters:
- value int an interval in milliseconds.
func (*FixedRateTimer) SetTask ¶
func (c *FixedRateTimer) SetTask(value INotifiable)
Sets a new INotifiable object to receive notifications from this timer. Parameters:
- value INotifiable a INotifiable object to be triggered.
func (*FixedRateTimer) Start ¶
func (c *FixedRateTimer) Start()
Starts the timer. Initially the timer is triggered after delay. After that it is triggered after interval until it is stopped.
func (*FixedRateTimer) Task ¶
func (c *FixedRateTimer) Task() INotifiable
Gets the INotifiable object that receives notifications from this timer. Returns INotifiable the INotifiable object or null if it is not set.
type ICleanable ¶
type ICleanable interface { // Clears component state. // Parameters: // - correlationId string // transaction id to trace execution through call chain. Clear(correlationId string) error }
Interface for components that should clean their state.
Cleaning state most often is used during testing. But there may be situations when it can be done in production.
see Cleaner
Example:
type MyObjectWithState { _state interface{} } ... func (mo * MyObjectWithState ) clear(correlationId string) { mo._state = interface{} }
type IClosable ¶
Interface for components that require explicit closure.
For components that require opening as well as closing use IOpenable interface instead.
see IOpenable
see Closer
Example:
type MyConnector { _client interface{} } ... // The _client can be lazy created func (mc *MyConnector) Close(correlationId: string):error { if (mc._client != nil) { mc._client.Close() mc._client = nil return nil } }
type IExecutable ¶
type IExecutable interface { // Executes component with arguments and receives execution result. // Parameters: // - correlationId string // transaction id to trace execution through call chain. // - args *Parameters // execution arguments. // Return interface{}, error // result or execution and error Execute(correlationId string, args *Parameters) (result interface{}, err error) }
Interface for components that can be called to execute work.
Example:
type EchoComponent {} ... func (ec* EchoComponent) Execute(correlationId: string, args: Parameters) (result interface{}, err error) { return nil, result = args.getAsObject("message") } echo := EchoComponent{}; message = "Test"; res, err = echo.Execute("123", NewParametersFromTuples("message", message)); fmt.Println(res);
type INotifiable ¶
type INotifiable interface { // Notifies the component about occured event. // Parameters: // - correlationId string // transaction id to trace execution through call chain. // - args *Parameters // notification arguments. Notify(correlationId string, args *Parameters) }
Interface for components that can be asynchronously notified. The notification may include optional argument that describe the occured event.
see Notifier
see IExecutable
Example:
type MyComponent {} ... func (mc *MyComponent)Notify(correlationId: string, args: Parameters){ fmt.Println("Occured event " + args.GetAsString("event")); } myComponent := MyComponent{}; myComponent.Notify("123", NewParametersFromTuples("event", "Test Event"));
type IOpenable ¶
type IOpenable interface { IClosable // Checks if the component is opened. // Returns bool // true if the component has been opened and false otherwise. IsOpen() bool // Opens the component. // Parameters: // - correlationId: string // transaction id to trace execution through call chain. // Return error Open(correlationId string) error }
Interface for components that require explicit opening and closing.
For components that perform opening on demand consider using ICloseable interface instead.
see IOpenable
see Opener
Example:
type MyPersistence { _client interface{} } func (mp* MyPersistence)IsOpen() bool { return mp._client != nil; } (mp* MyPersistence) Open(correlationId: string) error { if (mp.isOpen()) { return nil; } } (mp* MyPersistence) Close(correlationId: string) { if (mp._client != nil) { mp._client.close(); mp._client = nil; } }
type IParameterized ¶
type IParameterized interface { // Sets execution parameters. // Parameters: // parameters *Parameters // execution parameters. SetParameters(parameters *Parameters) }
Interface for components that require execution parameters.
type Parameters ¶
type Parameters struct {
data.AnyValueMap
}
Contains map with execution parameters.
In general, this map may contain non-serializable values. And in contrast with other maps, its getters and setters support dot notation and able to access properties in the entire object graph.
This class is often use to pass execution and notification arguments, and parameterize classes before execution.
func NewEmptyParameters ¶
func NewEmptyParameters() *Parameters
Creates a new instance of the map and assigns its value. Returns *Parameters
func NewParameters ¶
func NewParameters(values map[string]interface{}) *Parameters
Creates a new instance of the map and assigns its value. Parameters:
- values map[string]interface{}
Returns *Parameters
func NewParametersFromConfig ¶
func NewParametersFromConfig(config *config.ConfigParams) *Parameters
Returns Parameters a new Parameters object.
func NewParametersFromMaps ¶
func NewParametersFromMaps(maps ...map[string]interface{}) *Parameters
Creates a new Parameters by merging two or more maps. Maps defined later in the list override values from previously defined maps. Parameters:
- maps ...map[string]interface{} an array of maps to be merged
Returns *Parameters a newly created Parameters.
func NewParametersFromTuples ¶
func NewParametersFromTuples(tuples ...interface{}) *Parameters
Creates a new Parameters object filled with provided key-value pairs called tuples. Tuples parameters contain a sequence of key1, value1, key2, value2, ... pairs. see AnyValueMapFromTuplesArray Parameters:
- tuples ...interface{} the tuples to fill a new Parameters object.
Returns *Parameters a new Parameters object.
func NewParametersFromTuplesArray ¶
func NewParametersFromTuplesArray(tuples []interface{}) *Parameters
Creates a new AnyValueMap from a list of key-value pairs called tuples. The method is similar to fromTuples but tuples are passed as array instead of parameters. Parameters:
- tuples []interface{} a list of values where odd elements are keys and the following even elements are values
Returns *Parameters a newly created Parameters.
func NewParametersFromValue ¶
func NewParametersFromValue(value interface{}) *Parameters
Creates a new Parameters object filled with key-value pairs from specified object. Parameters:
- value interface{} an object with key-value pairs used to initialize a new Parameters.
Returns *Parameters a new Parameters object.
func (*Parameters) AssignTo ¶
func (c *Parameters) AssignTo(value interface{})
Assigns (copies over) properties from the specified value to this map. Parameters:
- value interface{} value whose properties shall be copied over.
func (*Parameters) Clone ¶
func (c *Parameters) Clone() interface{}
Creates a binary clone of this object. Returns interface{} a clone of this object.
func (*Parameters) Contains ¶
func (c *Parameters) Contains(key string) bool
Checks if this map contains an element with specified key. The key can be defined using dot notation and allows to recursively access elements of elements. Parameters:
- key string a key to be checked
Returns bool true if this map contains the key or false otherwise.
func (*Parameters) Get ¶
func (c *Parameters) Get(key string) interface{}
Gets a map element specified by its key. The key can be defined using dot notation and allows to recursively access elements of elements. Parameters:
- key string a key of the element to get.
Returns interface{} the value of the map element.
func (*Parameters) GetAsNullableParameters ¶
func (c *Parameters) GetAsNullableParameters(key string) *Parameters
Converts map element into an Parameters or returns nil if conversion is not possible. Parameters:
- key: string a key of element to get.
Returns *Parameters Parameters value of the element or nil if conversion is not supported.
func (*Parameters) GetAsParameters ¶
func (c *Parameters) GetAsParameters(key string) *Parameters
Converts map element into an Parameters or returns empty Parameters if conversion is not possible. Parameters:
- key string a key of element to get.
Returns *Parameters Parameters value of the element or empty Parameters if conversion is not supported.
func (*Parameters) GetAsParametersWithDefault ¶
func (c *Parameters) GetAsParametersWithDefault(key string, defaultValue *Parameters) *Parameters
Converts map element into an Parameters or returns default value if conversion is not possible. Parameters:
-key string a key of element to get. - defaultValue *Parameters the default value
Returns *Parameters Parameters value of the element or default value if conversion is not supported.
func (*Parameters) Omit ¶
func (c *Parameters) Omit(paths ...string) *Parameters
Omits selected parameters from this Parameters and returns the rest as a new Parameters object. Parameters:
- paths ...string keys to be omitted from copying over to new Parameters.
Returns *Parameters a new Parameters object.
func (*Parameters) Override ¶
func (c *Parameters) Override(parameters *Parameters, recursive bool) *Parameters
Overrides parameters with new values from specified Parameters and returns a new Parameters object. see setDefaults Parameters:
- parameters: Parameters Parameters with parameters to override the current values.
- recursive bool true to perform deep copy, and false for shallow copy. Default: false
Returns *Parameters a new Parameters object.
func (*Parameters) Pick ¶
func (c *Parameters) Pick(paths ...string) *Parameters
Picks select parameters from this Parameters and returns them as a new Parameters object. Parameters:
- paths ...string keys to be picked and copied over to new Parameters.
Returns *Parameters a new Parameters object.
func (*Parameters) Put ¶
func (c *Parameters) Put(key string, value interface{})
Puts a new value into map element specified by its key. The key can be defined using dot notation and allows to recursively access elements of elements. Parameters:
- key string a key of the element to put.
- value interface{} a new value for map element.
func (*Parameters) Remove ¶
func (c *Parameters) Remove(key string)
Removes a map element specified by its key Parameters:
- key string a key of the element to remove.
func (*Parameters) SetDefaults ¶
func (c *Parameters) SetDefaults(defaultParameters *Parameters, recursive bool) *Parameters
Set default values from specified Parameters and returns a new Parameters object. see Override Parameters:
- defaultParameters *Parameters Parameters with default parameter values.
- recursive bool true to perform deep copy, and false for shallow copy. Default: false
Returns *Parameters a new Parameters object.
type TCleaner ¶
type TCleaner struct{}
Helper class that cleans stored object state.
func (*TCleaner) Clear ¶
Clears state of multiple components. To be cleaned state components must implement ICleanable interface. If they don't the call to this method has no effect. Parameters:
- correlationId string transaction id to trace execution through call chain.
- components []interface{}
the list of components that are to be cleaned. Returns error
func (*TCleaner) ClearOne ¶
Clears state of specific component. To be cleaned state components must implement ICleanable interface. If they don't the call to this method has no effect. Parameters:
- correlationId: string transaction id to trace execution through call chain.
- component interface{} the component that is to be cleaned.
Returns error
type TCloser ¶
type TCloser struct{}
Helper class that closes previously opened components.
func (*TCloser) Close ¶
Closes multiple components. To be closed components must implement ICloseable interface. If they don't the call to this method has no effect. Parameters:
- correlationId string transaction id to trace execution through call chain.
- components []interface{} the list of components that are to be closed.
Returns error
type TExecutor ¶
type TExecutor struct{}
Helper class that executes components.
func (*TExecutor) Execute ¶
func (c *TExecutor) Execute(correlationId string, components []interface{}, args *Parameters) ([]interface{}, error)
To be executed components must implement IExecutable interface. If they don't the call to this method has no effect. Parameters:
- correlationId string transaction id to trace execution through call chain.
- components []interface{} a list of components that are to be executed.
- args *Parameters execution arguments.
Returns []interface{}, error execution result or error
func (*TExecutor) ExecuteOne ¶
func (c *TExecutor) ExecuteOne(correlationId string, component interface{}, args *Parameters) (interface{}, error)
Executes specific component. To be executed components must implement IExecutable interface. If they don't the call to this method has no effect. Parameters:
- correlationId string transaction id to trace execution through call chain.
- component interface{} the component that is to be executed.
- args: *Parameters execution arguments.
Returns []interface{}, error execution result or error
type TNotifier ¶
type TNotifier struct{}
Helper class that notifies components.
func (*TNotifier) Notify ¶
func (c *TNotifier) Notify(correlationId string, components []interface{}, args *Parameters)
Notifies multiple components. To be notified components must implement INotifiable interface. If they don't the call to this method has no effect. see NotifyOne see INotifiable Parameters:
- correlationId string transaction id to trace execution through call chain.
- components []interface{} a list of components that are to be notified.
- args *Parameters notification arguments.
func (*TNotifier) NotifyOne ¶
func (c *TNotifier) NotifyOne(correlationId string, component interface{}, args *Parameters)
Notifies specific component. To be notiied components must implement INotifiable interface. If they don't the call to this method has no effect. see INotifiable Parameters:
- correlationId string transaction id to trace execution through call chain.
- component interface{} the component that is to be notified.
- args *Parameters notifiation arguments.
type TOpener ¶
type TOpener struct{}
Helper class that opens components.
func (*TOpener) IsOpen ¶
Checks if all components are opened. To be checked components must implement IOpenable interface. If they don't the call to this method returns true. see isOpenOne see IOpenable Parameters:
- components []interface{} a list of components that are to be checked.
Returns bool true if all components are opened and false if at least one component is closed.
func (*TOpener) IsOpenOne ¶
Checks if specified component is opened. To be checked components must implement IOpenable interface. If they don't the call to this method returns true. see IOpenable
- component interface{} the component that is to be checked.
Returns bool true if component is opened and false otherwise.
func (*TOpener) Open ¶
Opens multiple components. To be opened components must implement IOpenable interface. If they don't the call to this method has no effect. see OpenOne see IOpenable Parameters:
- correlationId string transaction id to trace execution through call chain. components []interface{} the list of components that are to be closed.
Returns error
func (*TOpener) OpenOne ¶
Opens specific component. To be opened components must implement IOpenable interface. If they don't the call to this method has no effect. see IOpenable Parameters:
- correlationId string (optional) transaction id to trace execution through call chain.
- component interface{} the component that is to be opened.
Returns error