/*! \file pisysteminfo.h * \ingroup System * \~\brief * \~english System information * \~russian Информация о системе */ /* PIP - Platform Independent Primitives System information Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef PISYSTEMINFO_H #define PISYSTEMINFO_H #include "pitime.h" //! \~\ingroup System //! \~\brief //! \~english System information class. //! \~russian Класс информации о системе. //! \~\details //! \~english Provides system information such as mount points, machine key, and system details //! \~russian Предоставляет информацию о системе, такую как точки монтирования, уникальный ключ и детали системы class PIP_EXPORT PISystemInfo { public: //! \~\ingroup System //! \~\brief //! \~english Mount point information structure. //! \~russian Структура информации о точке монтирования. struct PIP_EXPORT MountInfo { //! \~english Absolute path to mount point //! \~russian Абсолютный путь к точке монтирования PIString mount_point; //! \~english Device description //! \~russian Описание устройства PIString device; //! \~english Filesystem name //! \~russian Имя файловой системы PIString filesystem; //! \~english Mount point label //! \~russian Метка точки монтирования PIString label; //! \~english Total space in bytes //! \~russian Полный объем в байтах ullong space_all = 0; //! \~english Used space in bytes //! \~russian Занятый объем в байтах ullong space_used = 0; //! \~english Free space in bytes //! \~russian Свободный объем в байтах ullong space_free = 0; //! \~english Is this device is removable //! \~russian Является ли устройство съёмным bool removable = false; }; //! \~english Absolute path to "ifconfig" utility. //! \~russian Абсолютный путь к утилите "ifconfig". PIString ifconfigPath; //! \~english Application execution path (\c argv[0]). //! \~russian Путь вызова приложения (\c argv[0]). PIString execCommand; //! \~english System hostname. //! \~russian Hostname системы. PIString hostname; //! \~english Username that starts application. //! \~russian Имя пользователя, запустившего приложение. PIString user; //! \~english System name (Windows, MacOS, ...). //! \~russian Имя системы (Windows, MacOS, ...). PIString OS_name; //! \~english System version. //! \~russian Версия системы. PIString OS_version; //! \~english System architecture (x86, x86_64, ...). //! \~russian Архитектура системы (x86, x86_64, ...). PIString architecture; //! \~english Application start date and time. //! \~russian Дата и время запуска приложения. PIDateTime execDateTime; //! \~english System logical processors count. //! \~russian Количество логических процессоров системы. int processorsCount = 1; //! \~english Returns all mount points absolute pathes. //! \~russian Возвращает абсолютные пути всех точек монтирования. static PIStringList mountRoots(); //! \~english Returns information of all mount points. //! \~russian Возвращает информацию о всех точках монтирования. static PIVector mountInfo(bool ignore_cache = false); //! \~english Returns system unique key. //! \~russian Возвращает уникальный ключ системы. static PIString machineKey(); //! \~english Returns system unique key hash. //! \~russian Возвращает хэш уникального ключа системы. static uint machineID(); //! \~english Returns singleton of %PISystemInfo. //! \~russian Возвращает синглтон %PISystemInfo. static PISystemInfo * instance(); private: PISystemInfo() {} NO_COPY_CLASS(PISystemInfo); }; //! \relatesalso PICout //! \~english Output operator to \a PICout. //! \~russian Оператор вывода в \a PICout. inline PICout operator<<(PICout s, const PISystemInfo::MountInfo & v) { s.saveAndSetControls(0); s << "MountInfo(" << v.device << " mounted on \"" << v.mount_point << "\", type " << v.filesystem << ", label \"" << v.label << "\", all " << PIString::readableSize(v.space_all) << ", used " << PIString::readableSize(v.space_used) << ", free " << PIString::readableSize(v.space_free) << ")"; s.restoreControls(); return s; } #endif // PISYSTEMINFO_H