public function start()
{
$state = $this->getState();
if ($state === Runtime::STATE_DESTROYED) {
return Promise::doReject(new RejectionException("It is not possible to start runtime from state [{$state}]."));
} else {
if ($state === Runtime::STATE_STARTED) {
return Promise::doResolve('Runtime has been already started.');
}
}
$this->setState(Runtime::STATE_STARTED);
$emitter = $this->getEventEmitter();
$emitter->emit('beforeStart');
$emitter->emit('start');
$emitter->emit('afterStart');
return Promise::doResolve('Runtime has been started.');
}