@kronos-integration/service
v11.2.0
Published
Base service implementation
Downloads
3,155
Readme
@kronos-integration/service
Base service implementation
Service states
stateDiagram-v2
stopped --> starting [1]
starting --> failed: [2]
starting --> running: [3]
running --> stopping: [4]
running --> failed: [5]
stopping --> failed: [6]
stopping --> stopped: [7]
The transitions are:
| Number | From | To | Condition |
| ------ | ---- | -- | --------- |
| 1 | ~stopped~
| ~starting~
| |
| 2 | ~starting~
| ~failed~
| |
| 3 | ~starting~
| ~running~
| |
| 4 | ~running~
| ~stopping~
| |
| 5 | ~running~
| ~failed~
| |
| 6 | ~stopping~
| ~failed~
| |
| 7 | ~stopping~
| ~stopped~
| |
API
Table of Contents
- EndpointsMixin
- endpoints
- ServiceConfig
- merge
- defineServiceConsumerProperties
- ServiceLogger
- ServiceProviderMixin
- Service
- StandaloneServiceProvider
EndpointsMixin
Endpoint accessor mixin. Manages endpoints in a container.
Parameters
superclass
endpoints
Default set of endpoints to create.
Returns Object {} empty set
ServiceConfig
Extends Service
Config providing service. Dispatches config requests to services. Also preserves them until a maching service becomes avaliable.
Properties
configFor
Deliver configuration for a given service.
Parameters
clearPreserved
Forget about preserved config of a service.
Parameters
name
string service name
configureValue
Set config entry.
Parameters
key
string path to the valuevalue
any
configure
Parameters
autostart
We always start immediate.
Returns boolean true
name
Returns string 'config'
merge
Merge from b into a. When a and b are arrays of values only the none duplicates are appendend to a.
Parameters
a
anyb
any
Returns any merged b into a
defineServiceConsumerProperties
Assign services based on a configuration.
Parameters
target
Object objectconfig
Object service defintionprovider
Object service providerwaitUntilFactoryPresent
boolean
ServiceLogger
Extends Service
Log receiving service.
autostart
We always start immediate.
Returns boolean true
name
Returns string 'logger'
endpoints
Adds a log input endpoint to the set of Service endpoints.
Returns Object predefined endpoints
ServiceProviderMixin
Provide services and hold service configuration. By default a service provider has two build in services 'logger' and 'config'.
Parameters
superclass
serviceLoggerClass
(optional, defaultServiceLogger
)serviceConfigClass
(optional, defaultServiceConfig
)
Service
Extends EndpointsMixin(StateTransitionMixin(LogLevelMixin(class {}), prepareActions({ start: { stopped: rsfDefault }, restart: { stopped: rsfDefault, running: { target: "running", during: "restarting", timeout } }, stop: { running: ssfDefault, starting: ssfDefault, failed: ssfDefault } }), "stopped"))
Service The initial state is 'stopped'. All services have at least three endpoints:
- log out: log events
- config in: configuration request
- command in: administrative actions to be executed by the step
Parameters
config
Objectic
InitializationContext
Properties
endpoints
Object
extendetName
Used in human readable state messages. Besides the actual service name it may contain additional short hints.
Returns string
stateChanged
Called when the service state changes. Emits a serviceStateChanged event to the owner.
Parameters
rejectWrongState
Called when state transition is not allowed.
Parameters
action
string originating action name
- Throws any always
timeoutForTransition
Deliver transition timeout.
Parameters
transition
Object
Returns number milliseconds before throwing for a long running transition
_start
Opens all endpoint connections.
_stop
Closes all endpoint connections.
_restart
Restart action. default implementation does a _stop() and a _start()
Returns Promise fulfills after start
restartIfRunning
Restarts if in running mode. Otherwise does nothing.
Returns Promise resolves when restart is done (or immediate if no restart triggered)
toStringAttributes
Mapping of properties used in toString.
Returns Object
isServiceProvider
Base service is not a provider.
Returns boolean false
toString
Returns the string representation of this service.
Returns string human readable name
toJSONWithOptions
Deliver json representation.
Parameters
options
Objectoptions.includeRuntimeInfo
boolean include runtime informtion like stateoptions.includeDefaults
boolean include default endpointsoptions.includeName
boolean include name of the serviceoptions.includeConfig
boolean include config attributesoptions.includePrivate
boolean include private config attributes
Returns Object json representation
name
Defaults to the type.
Returns string type
autostart
Should we start when beeing registered.
Returns boolean false
_configure
Takes attribute values from config parameters and copies them over to the object. Copying is done according to configurationAttributes. Which means we loop over all configuration attributes. and then for each attribute decide if we use the default, call a setter function or simply assign the attribute value.
Parameters
config
Object
Returns Set of modified attributes
configure
Use new configuration. Internally calls _configure(config) as the constructor does. If attribute with needsRestart are touched the restartIfRunning method will be called.
Parameters
config
Object
Returns Promise fillfills when config is applied
log
Adds service name to the log event.
Parameters
configurationAttributes
Meta information for the config attributes.
- default optional default value of the attribute
- needsRestart optional modification requires a service restart
- setter(newValue,attribute) optional function to be used if simple value assignment is not enough The Service class only defines the logLevel, and start/stop/restart timeout attribute
Returns Object
endpoints
Definition of the predefined endpoints.
- log out
- config in
Returns Object predefined endpoints
StandaloneServiceProvider
Extends ServiceProviderMixin(Service)
Simple service manager (for examples and testing only).
name
Returns string 'standalone-provider'
install
With npm do:
npm install @kronos-integration/service
license
BSD-2-Clause