@kronos-integration/service
Base service implementation
API
Table of Contents
EndpointsMixin
Endpoint accessor mixin.
Manages endpoints in a container.
Parameters
superclass
Class class to be extended
Returns Class extended class
endpoints
Default set of endpoints to create.
Returns Object {} empty set
ServiceConfig
Extends Service
Config providing service.
Dispatches config requests to services;
or preserves them until a maching service becomes avaliable.
Properties
preservedConfigs
Map<string, Object> values for services not already established
configFor
Deliver configuration for a given service.
Parameters
clearPreserved
Forget about preserved config of a service.
Parameters
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
Returns any merged b into a
defineServiceConsumerProperties
Assign services based on a configuration.
Parameters
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
Class where the logging houtd go (optional, default ServiceLogger
)serviceConfigClass
Class where the config comes from (optional, default ServiceConfig
)
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
Object
config.name
string config.logLevel
string config.autostart
boolean defaults to falseconfig.description
string human readable descriptionconfig.endpoints
Object will be merged with the build in ones
-
ic
InitializationContext
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
timeoutForTransition
Deliver transition timeout.
Parameters
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
Object
options.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
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
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.
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