Gets the container's communication manager.
Gets the container object of this controller.
Gets the IO context of this router.
Gets the IO nodes currently managed by this router.
Gets the controller's options as specified in the configuration options.
Gets the registered name of this controller.
The registered name is either defined by the corresponding key in the
Components.controllers
object in the container configuration, or by
invoking Container.registerController
method with this name.
Gets the container's Runtime object.
Checks whether the value types and value data formats of the given IO source and actor match.
This is a precondition for associating IO source and actor.
The base implementation returns true, if the given source value type is identical to the given actor value type and both value data formats (either raw binary or JSON) match; otherwise false.
Override this base implementation if you need a custom value type compatibility check in your router.
The default function used to compute the recommended update rate of an individual IO source - IO actor association.
This function takes into account the maximum possible update rate of the source and the desired update rate of the actor and returns a value that satisfies both rates.
Override this method in a subclass to implement a custom rate function.
the IoSource object
the IoActor object
the IO source's node
Define all association rules for routing.
Note that any previously defined rules are discarded.
Rules with undefined condition function are ignored.
association rules for this IO router
Whenever one of the controller's log methods (e.g. logDebug
, logInfo
,
logWarning
, logError
, logFatal
) is called by application code, the
controller creates a Log object with appropriate property values and
passes it to this method before advertising it.
You can override this method to additionally set certain properties (such
as LogHost.hostname
or Log.logLabels
). Ensure that
super.extendLogObject
is called in your override. The base method does
nothing.
log object to be extended before being advertised
Advertise a Log object for debugging purposes.
a debug message
any number of log tags
Advertise a Log object for an error.
an error (object)
additional error message
any number of log tags
Advertise a Log object for an error with stacktrace information.
an error (object)
additional error message
any number of log tags
Advertise a Log object for a fatal error.
an error (object)
additional error message
any number of log tags
Advertise an informational Log object.
an informational message
any number of log tags
Advertise a Log object for a warning.
a warning message
any number of log tags
Called when the communication manager is about to start or restart.
Override this method to implement side effects here. Ensure that
super.onCommunicationManagerStarting
is called in your override. The
base implementation does nothing.
Called when the communication manager is about to stop.
Override this method to implement side effects here. Ensure that
super.onCommunicationManagerStopping
is called in your override. The
base implementation does nothing.
Called by the container when this instance should be disposed.
Implement cleanup side effects here. Ensure that super.onDispose
is
called in your override. The base implementation does nothing.
Called when the container has completely set up and injected all dependency components, including all its controllers.
Override this method to perform initializations in your custom controller
class instead of defining a constructor. Although the base implementation
does nothing it is good practice to call super.onInit()
in your
override method; especially if your custom controller class does not
extend from the base Controller
class directly.
Invoked when the IO context of this router has changed.
Triggers reevaluation of all defined rules.
Called by the IO router base implementation when an IO node is being managed.
To be implemented by concrete subclasses.
Called by the IO router base implementation when currently managed IO nodes are going to be unmanaged.
To be implemented by concrete subclasses.
Override this method to perform side effects when this router is started.
This method does nothing.
Override this method to perform side effects when this router is stopped.
This method does nothing.
Subclasses should disassociate all current associations in this method.
Generated using TypeDoc
Supports basic routing of data from IO sources to IO actors based on an associated IO context.
This class implements a basic routing algorithm where all compatible pairs of IO sources and IO actors are associated, not taking any other context information into account. An IO source and an IO actor are compatible if both define equal value types in equal data formats.
Note that this router makes its IO context available by advertising and for discovery (by core type, object type, or object Id) and listens for Update-Complete events on its IO context, triggering
onIoContextChanged
automatically.This router class requires the following controller options:
ioContext
: the IO context for which this router is managing routes (mandatory)