Kraken\Console\Server\Manager\ProjectManager::destroyProject PHP Метод

destroyProject() публичный Метод

public destroyProject ( $flags = Runtime::DESTROY_FORCE_SOFT )
    public function destroyProject($flags = Runtime::DESTROY_FORCE_SOFT)
    {
        if (!isset($this->data['pid'])) {
            return Promise::doResolve("Project was not needed to be destroyed, because it had not existed.");
        }
        $manager = $this;
        $pid = $this->data['pid'];
        $alias = $this->data['alias'];
        $name = $this->data['name'];
        if ($flags === Runtime::DESTROY_KEEP) {
            return Promise::doReject(new ResourceOccupiedException("Project could not be destroyed with force level=DESTROY_KEEP."));
        } else {
            if ($flags === Runtime::DESTROY_FORCE_SOFT) {
                $req = $this->createRequest($this->channel, $alias, new RuntimeCommand('container:destroy'));
                return $req->call()->then(function ($value) use($manager) {
                    usleep(1000.0);
                    $manager->freeProject();
                    return $value;
                });
            } else {
                if ($flags === Runtime::DESTROY_FORCE) {
                    return $this->destroyProject(Runtime::DESTROY_FORCE_SOFT)->then(null, function () use($manager) {
                        return $manager->destroyProject(Runtime::DESTROY_FORCE_HARD);
                    });
                }
            }
        }
        if (!$this->system->existsPid($pid)) {
            return Promise::doResolve()->then(function () use($manager) {
                $manager->freeProject();
                return "Project was not needed to be destroyed, because it had not existed.";
            });
        } else {
            if (!$this->system->kill($pid)) {
                return Promise::doReject(new ResourceOccupiedException("Project could not be killed forcefully."));
            }
        }
        return Promise::doResolve()->then(function () use($manager) {
            $manager->freeProject();
            return "Process has been destroyed!";
        });
    }