// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include "dockerplugin.h" #include "dockerapi.h" #include "dockerconstants.h" #include "dockerdevice.h" #include "dockersettings.h" #include #include #include using namespace Core; using namespace ProjectExplorer; using namespace Utils; namespace Docker::Internal { class DockerPluginPrivate { public: ~DockerPluginPrivate() { m_deviceFactory.shutdownExistingDevices(); } DockerSettings m_settings; DockerDeviceFactory m_deviceFactory{&m_settings}; DockerApi m_dockerApi{&m_settings}; }; static DockerPlugin *s_instance = nullptr; DockerPlugin::DockerPlugin() { s_instance = this; FSEngine::registerDeviceScheme(Constants::DOCKER_DEVICE_SCHEME); } DockerApi *DockerPlugin::dockerApi() { QTC_ASSERT(s_instance, return nullptr); return &s_instance->d->m_dockerApi; } DockerPlugin::~DockerPlugin() { FSEngine::unregisterDeviceScheme(Constants::DOCKER_DEVICE_SCHEME); s_instance = nullptr; delete d; } void DockerPlugin::initialize() { d = new DockerPluginPrivate; } } // Docker::Interanl