Interface added to `LfoCore to implement source
Source have some responsability on graph as they mostly control its whole
lifecycle. They must implement the start and stop method in order to
make sure the graph is initialized and set started
to true.
A source should never accept and propagate incomming frames until started
is set to true
.
- Source:
Example
class MySource extends SourceMixin(BaseLfo) {}
Members
init
Initialize the graph by calling initModule
. When the returned Promise
fulfills, the graph can be considered as initialized and start
can be
called safely. If start
is called whithout explicit init
, init
is
made internally, actual start of the graph is then not garanteed to be
synchronous.
- Source:
Example
// safe initialization and start
source.init().then(() => source.start())
// safe initialization and start
source.start();
processFrame
The implementation should never allow incomming frames
if this.started
is not true
.
- Source:
Example
// basic `processFrame` implementation
processFrame(frame) {
if (this.started === true) {
this.prepareFrame();
this.processFunction(frame);
this.propagateFrame();
}
}
start
Interface method to implement that starts the graph.
The method main purpose is to make sure take verify initialization step and
set started
to true
when done.
Should behave synchronously when called inside init().then()
and async
if called without init step.
- Source:
Example
// basic `start` implementation
start() {
if (this.initialized === false) {
if (this.initPromise === null) // init has not yet been called
this.initPromise = this.init();
this.initPromise.then(this.start);
return;
}
this.started = true;
}
stop
Interface method to implement that stops the graph.
- Source:
Example
// basic `stop` implementation
stop() {
this.started = false;
}