// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #pragma once #include "remotelinux_export.h" #include #include namespace RemoteLinux { class REMOTELINUX_EXPORT LinuxDevice : public ProjectExplorer::IDevice { public: using Ptr = QSharedPointer; using ConstPtr = QSharedPointer; ~LinuxDevice(); static Ptr create() { return Ptr(new LinuxDevice); } ProjectExplorer::IDeviceWidget *createWidget() override; bool canAutoDetectPorts() const override; ProjectExplorer::PortsGatheringMethod portsGatheringMethod() const override; bool canCreateProcessModel() const override { return true; } ProjectExplorer::DeviceProcessList *createProcessListModel(QObject *parent) const override; bool hasDeviceTester() const override { return true; } ProjectExplorer::DeviceTester *createDeviceTester() const override; ProjectExplorer::DeviceProcessSignalOperation::Ptr signalOperation() const override; ProjectExplorer::DeviceEnvironmentFetcher::Ptr environmentFetcher() const override; QString userAtHost() const; Utils::FilePath rootPath() const override; bool handlesFile(const Utils::FilePath &filePath) const override; bool isExecutableFile(const Utils::FilePath &filePath) const override; bool isReadableFile(const Utils::FilePath &filePath) const override; bool isWritableFile(const Utils::FilePath &filePath) const override; bool isReadableDirectory(const Utils::FilePath &filePath) const override; bool isWritableDirectory(const Utils::FilePath &filePath) const override; bool isFile(const Utils::FilePath &filePath) const override; bool isDirectory(const Utils::FilePath &filePath) const override; bool createDirectory(const Utils::FilePath &filePath) const override; bool exists(const Utils::FilePath &filePath) const override; bool ensureExistingFile(const Utils::FilePath &filePath) const override; bool removeFile(const Utils::FilePath &filePath) const override; bool removeRecursively(const Utils::FilePath &filePath) const override; bool copyFile(const Utils::FilePath &filePath, const Utils::FilePath &target) const override; bool renameFile(const Utils::FilePath &filePath, const Utils::FilePath &target) const override; Utils::FilePath symLinkTarget(const Utils::FilePath &filePath) const override; void iterateDirectory(const Utils::FilePath &filePath, const std::function &callBack, const Utils::FileFilter &filter) const override; QByteArray fileContents(const Utils::FilePath &filePath, qint64 limit, qint64 offset) const override; bool writeFileContents(const Utils::FilePath &filePath, const QByteArray &data) const override; QDateTime lastModified(const Utils::FilePath &filePath) const override; Utils::ProcessInterface *createProcessInterface() const override; ProjectExplorer::FileTransferInterface *createFileTransferInterface( const ProjectExplorer::FileTransferSetupData &setup) const override; Utils::Environment systemEnvironment() const override; qint64 fileSize(const Utils::FilePath &filePath) const override; qint64 bytesAvailable(const Utils::FilePath &filePath) const override; QFileDevice::Permissions permissions(const Utils::FilePath &filePath) const override; bool setPermissions(const Utils::FilePath &filePath, QFileDevice::Permissions permissions) const override; protected: LinuxDevice(); class LinuxDevicePrivate *d; friend class SshProcessInterface; friend class SshTransferInterface; }; namespace Internal { class LinuxDeviceFactory final : public ProjectExplorer::IDeviceFactory { public: LinuxDeviceFactory(); }; } // namespace Internal } // namespace RemoteLinux