type

Service

src const mixin Service

Services are used to publish functionality in a VM for use by other software components. The service registry for the VM is keyed by public types each service implements.

The following table illustrates the service lifecycle:

Method        isInstalled  isRunning
-----------   -----------  ----------
constructed   false        false
install       true         false
start         true         true
stop          true         false
uninstall     false        false

While the service is installed, it may be looked up in the registry via find and findAll. The running state is used to invoke the onStart and onStop callbacks which gives the service a chance to setup/shutdown its actors and associated resources.

methods

equals

Services are required to implement equality by reference.

find

Find an installed service by type.

findAll

Find all services installed for the given type.

hash

Services are required to implement equality by reference.

install

Install this service into the VM's service registry.

isInstalled

Is the service in the installed state.

isRunning

Is the service in the running state.

list

List all the installed services.

onStart

Callback when service transitions into running state.

onStop

Callback when service transitions out of the running state.

start

Start this service.

stop

Stop this service.

uninstall

Uninstall this service from the VM's service registry.

Slot Details

equals

src override Bool equals(Obj? that)

Services are required to implement equality by reference.

find

src static Service? find(Type t, Bool checked := true)

Find an installed service by type. If not found and checked is false return null, otherwise throw UnknownServiceErr. If multiple services are registered for the given type then return the first one registered.

findAll

src static Service[] findAll(Type t)

Find all services installed for the given type. If no services are found then return an empty list.

hash

src override Int hash()

Services are required to implement equality by reference.

install

src This install()

Install this service into the VM's service registry. If already installed, do nothing. Return this.

isInstalled

src Bool isInstalled()

Is the service in the installed state. Note this method requires accessing a global hash table, so it should not be heavily polled in a concurrent environment.

isRunning

src Bool isRunning()

Is the service in the running state. Note this method requires accessing a global hash table, so it should not be heavily polled in a concurrent environment.

list

src static Service[] list()

List all the installed services.

onStart

src protected virtual Void onStart()

Callback when service transitions into running state. If this callback raises an exception, then the service fails to transition to the running state.

onStop

src protected virtual Void onStop()

Callback when service transitions out of the running state. If this callback raises an exception, then the service is still transitioned to the non-running state.

start

src This start()

Start this service. If not installed, this method automatically calls install. If already running, do nothing. Return this.

stop

src This stop()

Stop this service. If not running, do nothing. Return this.

uninstall

src This uninstall()

Uninstall this service from the VM's service registry. If the service is running, this method automatically calls stop. If not installed, do nothing. Return this.