Simple startable plugin example
The following sample code implements a complete Singleton startable plugin. The example does not do anything useful in its start method, but demonstrates the basic structure of creating a block that you pass to the callback handler’s execute method.
package gw.api.startableplugin
uses gw.api.startable.IStartablePlugin
uses gw.api.startable.StartablePluginCallbackHandler
uses gw.api.startable.StartablePluginState
uses gw.api.server.Availability
uses gw.api.server.AvailabilityLevel
@Availability(AvailabilityLevel.MULTIUSER)
class HelloWorldStartablePlugin implements IStartablePlugin {
var _state = StartablePluginState.Stopped;
var _callback : StartablePluginCallbackHandler;
construct() {
}
override property get State() : StartablePluginState {
return _state
}
override function start( cbh: StartablePluginCallbackHandler, isStarting: boolean ) {
_callback = cbh
_callback.execute( \ -> {
// Do some work:
// [...]
} )
_state = StartablePluginState.Started
_callback.log( "*** From HelloWorldStartablePlugin: Hello world." )
}
override function stop( isShuttingDown: boolean ) {
_callback.log( "*** From HelloWorldStartablePlugin: Goodbye." )
_callback = null
_state = StartablePluginState.Stopped
}
}
