proglib
Version:
Многофункциональная библиотека
323 lines (301 loc) • 40.8 kB
JavaScript
'use struct';
const os = require('os');
/**
* Предоставляет информацию об операционной системе.
*/
class OperatingSystem {
/**
* Возвращает строку, которая определяет архитектуру CPU на данной ОС для которой компилируется бинарный Node.js.
*/
static Architecture() {
return os.arch();
}
/**
* Возвращает объект, содержащий общеиспользуемые константы операционнной системы для кодировки ошибок, сигналов процессов и тому подобное.
*/
static get constants() {
return os.constants;
}
/**
* Возвращает массив объектов, которые содержат информацию про каждый установленное ядро.
*/
static CPUS() {
return os.cpus();
}
/**
* Возвращает строку, определяющую порядок байт CPU для которого скомпилирован бинарный Node.js.
*/
static Endianness() {
return os.endianness();
}
/**
* Возвращает количество свободной системной памяти в байтах в виде целого числа.
*/
static FreeMem() {
return os.freemem();
}
/**
* Возвращает домашнюю директорию для текущего пользователя в виде строки.
*/
static HomeDirectory() {
return os.homedir();
}
/**
* Возвращает имя хоста операционной системы в в виде строки.
*/
static HostName() {
return os.hostname();
}
/**
* Возвращает массив, содержащий средние значения нагрузки за 1, и 15 минут.
* Средняя нагрузка – это мера активности системы, вычисленная операционной системой и выраженная в виде дробного числа. Следуя правилу большого пальца, средняя нагрузка в идеале должна быть меньше, чем число логических CPU в системе.
*/
static LoadAvg() {
return os.loadavg();
}
/**
* Возвращает объект, содержащий только сетевые интерфейсы, которые были назначены на адрес сети.
* Каждый ключ возвращаемого объекта указывает на сетевой интерфейс. Соответствующее ему значение является массивом объектов, каждый из которых описывает назначенный адрес сети.
*/
static NetworkInterfaces() {
return os.networkInterfaces();
}
/**
* Возвращает строку, показывающущю, какая платформа ОС была установлена во время компиляции Node.js.
*/
static Platform() {
return os.platform();
}
/**
* Возвращает строку, показывающую релиз операционной системы.
*/
static Release() {
return os.release();
}
/**
* Возвращает строку, задающую операционную директорию по умолчанию для хранения временных файлов.
*/
static TempPath() {
return os.tmpdir();
}
/**
* Возвращает все количество системной памяти в байтах в виде целого числа.
*/
static TotalMem() {
return os.totalmem();
}
/**
* Возвращает строку, показывающую имя операционной системы.
*/
static Type() {
return os.type();
}
/**
* Возвращает время безотказной работы системы в секундах.
*/
static TickCount() {
return os.uptime();
}
/**
* Возвращает информацию о текущем пользователе.
*/
static UserInfo() {
return os.userInfo();
}
}
module.exports = OperatingSystem;
// КОНСТАНТЫ СИГНАЛОВ (эти константы сигналов экспортируются из OperatingSystem.constants.signals)
// -------------------------------------------------------------------------------------------------------------------------------------------------------------
// | Константа | Описание |
// |------------------|----------------------------------------------------------------------------------------------------------------------------------------|
// | SIGHUP | Посылается для индикации закрытия управляющего терминала или существования родительского процесса |
// | SIGINT | Посылается для индикации, когда пользователь хочет прервать процесс ((Ctrl+C)) |
// | SIGQUIT | Посылается для индикации, когда пользователь хочет завершить процесс и выполнить сброс ядра. |
// | SIGILL | Отправляется в процесс для уведомления о попытках выполнения недопустимой, некорректной, неизвестной или привелигированной инструкции. |
// | SIGTRAP | Отправляется в процесс, когда происходит иключение. |
// | SIGABRT | Отправляется в процесс для запроса о прерывании. |
// | SIGIOT | Синоним SIGABRT |
// | SIGBUS | Отправляется в процесс для предупреждения об ошибке шины. |
// | SIGFPE | Отправляется в процесс для предупреждения о выполнении недопустимой арифметической операции. |
// | SIGKILL | Отправляется в процесс для его немедленного завершения. |
// | SIGUSR1, SIGUSR2 | Отправляется в процесс для определения заданных пользователем условий. |
// | SIGSEGV | Отправляется в процесс для уведомления об ошибке сегментации. |
// | SIGPIPE | Отправляется в процесс при попытке записи в отключенный пайп. |
// | SIGALRM | Отправляется в процесс, когда истекает системный таймер. |
// | SIGTERM | Отправляется в процесс для запроса о завершении. |
// | SIGCHLD | Отправляется в процесс, когда завершается дочерний процесс. |
// | SIGSTKFLT | Отправляется в процесс для индикации ошибки стека на сопроцессоре. |
// | SIGCONT | Отправляется с инструкциями операционной системе для продолжения приостановленного процесса. |
// | SIGSTOP | Отправляется с инструкциями операционной системе для остановки процесса. |
// | SIGTSTP | Отправляется в процесс с запросом на остановку. |
// | SIGBREAK | Отправляется для индикации, когда пользователь хочет прервать процесс. |
// | SIGTTIN | Отправляется в процесс, когда он читает TTY, находясь в режиме бэкграунда. |
// | SIGTTOU | Отправляется в процесс, когда он записывает в TTY, находясь в режиме бэкграунда. |
// | SIGURG | Отправляется в процесс, когда нужно прочитать срочные данные из сокета |
// | SIGXCPU | Отправляется в процесс, когда он превосходит свой лимит использования CPU. |
// | SIGXFSZ | Отправляется в процесс, когда он создает больший файл, чем максимально допустимый. |
// | SIGVTALRM | Отправляется в процесс при истечении виртуального таймера. |
// | SIGPROF | Отправляется в процесс при истечении системного таймера. |
// | SIGWINCH | Отправляется в процесс, когда управляющий терминал меняет размер. |
// | SIGIO | Отправляется в процесс, когда доступен ввод-вывод (I/O) |
// | SIGPOLL | Синоним SIGIO |
// | SIGLOST | Отправляется в процесс, когда теряется блокировщик файла. |
// | SIGPWR | Отправляется в процесс для уведомления об ошибке включения. |
// | SIGINFO | Синоним SIGPWR |
// | SIGSYS | Отправляется в процесс для уведомления о некорректном аргументе. |
// | SIGUNUSED | Синоним SIGSYS |
// -------------------------------------------------------------------------------------------------------------------------------------------------------------
// КОНСТАНТЫ ОШИБОК (константы ошибок экспортируются из OperatingSystem.constants.errno)
// Константы ошибок POSIX
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// | Константа | Описание |
// |-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
// | E2BIG | Показывает, что список аргументов длиннее, чем ожидалось |
// | EACCES | Показывает, что операция не получила достаточного разрешения |
// | EADDRINUSE | Адрес сети уже используется |
// | EADDRNOTAVAIL | Адрес сети на данный момент недоступен для использования |
// | EAFNOSUPPORT | Семейство адресов сети не поддерживается |
// | EAGAIN | На данный момент нет доступных данных, нужно попробовать выполнить операцию позже |
// | EALREADY | Сокет уже обрабатывает соединение |
// | EBADF | Файловый дескриптор невалидный |
// | EBADMSG | Недопустимые данные |
// | EBUSY | Девайс или источник заняты |
// | ECANCELED | Операция была отменена |
// | ECHILD | Дочерний процесс не существует |
// | ECONNABORTED | Сетевое соединение было прервано |
// | ECONNREFUSED | Сетевое соединение отклонено |
// | ECONNRESET | Сетевое соединение сброшено |
// | EDEADLK | Удалось избежать окончания ресурсов |
// | EDESTADDRREQ | Требуется адрес назначения |
// | EDOM | Аргумент находится вне домена функции |
// | EDQUOT | Превышено выделенное пространство диска |
// | EEXIST | Файл уже существует |
// | EFAULT | Недопустимый указатель адреса |
// | EFBIG | Файл слишком большой |
// | EHOSTUNREACH | Хост недоступен |
// | EIDRM | Идентификатор был удален |
// | EILSEQ | Недопустимая последовательность байтов |
// | EINPROGRESS | Операция уже выполняется |
// | EINTR | Вызов функции был прерван |
// | EINVAL | Получен недопустимый аргумент |
// | EIO | Ошибка ввода-вывод |
// | EISCONN | Сокет подключен |
// | EISDIR | Путь является директорией |
// | ELOOP | Слишком много уровней символьных ссылок в пути |
// | EMFILE | Слишком много открытых файлов |
// | EMLINK | Слишком много ссылок на файл |
// | EMSGSIZE | Полученное сообщение слишком длинное |
// | EMULTIHOP | Была попытка многоинтервального подключения |
// | ENAMETOOLONG | Имя файла слишком длинное |
// | ENETDOWN | Сеть <упала> |
// | ENETRESET | Соединение было прервано сетью |
// | ENETUNREACH | Сеть недоступна |
// | ENFILE | Слишком много открытых файлов в системе |
// | ENOBUFS | Нет доступного места для буфера |
// | ENODATA | Нет доступных сообщений в первой очереди на чтение в стриме |
// | ENODEV | Нет такого девайса |
// | ENOENT | Нет такого файла или директории |
// | ENOEXEC | Формат выполнения ошибочен |
// | ENOLCK | Нет доступных блокировок |
// | ENOLINK | Ссылка была разорвана |
// | ENOMEM | Недостаточно места |
// | ENOMSG | Нет сообщений заданного типа |
// | ENOPROTOOPT | Данный протокол недоступен |
// | ENOSPC | Нет доступного места на девайсе |
// | ENOSR | Нет доступных ресурсов стрима |
// | ENOSTR | Данный ресурс не является стримом |
// | ENOSYS | Функция не была реализована |
// | ENOTCONN | Сокет не был подключен |
// | ENOTDIR | Путь не является директорией |
// | ENOTEMPTY | Директория не является пустой |
// | ENOTSOCK | Данный элемент не является сокетом |
// | ENOTSUP | Данная операция не поддерживается |
// | ENOTTY | Некорректные операции для управления вводом-выводом |
// | ENXIO | Нет такого девайса или адреса |
// | EOPNOTSUPP | Операция не поддерживается на сокете. Следует помнить, что так как ENOTSUP и EOPNOTSUPP имеют одинаковые значения на Linux, соответственно POSIX.1 значения этих ошибок должны быть разделены. |
// | EOVERFLOW | Значение слишком большое для хранения в данном типе данных |
// | EPERM | Операция не разрешена |
// | EPIPE | Нерабочий пайп |
// | EPROTO | Ошибка протокола |
// | EPROTONOSUPPORT | Протокол не поддерживается |
// | EPROTOTYPE | Неправильный тип протокола для сокета |
// | ERANGE | Результат слишком большой |
// | EROFS | Файловая система открыта только для чтения |
// | ESPIPE | Недопустимая операция поиска |
// | ESRCH | Нет такого процесса |
// | ESTALE | Файловый обработчик устарел |
// | ETIME | Вышло время |
// | ETIMEDOUT | Время соединения вышло |
// | ETXTBSY | Текстовый файл занят |
// | EWOULDBLOCK | Операция будет заблокирована |
// | EXDEV | Неточная ссылка |
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//
// Константы ошибок Windows
// ----------------------------------------------------------------------------------
// | Константа | Описание |
// |------------------------|-------------------------------------------------------|
// | WSAEINTR | Указывает на прерванный вызов функции |
// | WSAEBADF | Указывает на недопустимый файловый обработчик |
// | WSAEACCES | Нет достаточно прав для выполнения операции |
// | WSAEFAULT | Недопустимый указатель адреса |
// | WSAEINVAL | Был передан недопустимый аргумент |
// | WSAEMFILE | Слишком много открытых файлов |
// | WSAEWOULDBLOCK | Ресурс временно недоступен |
// | WSAEINPROGRESS | Операция на данный момент выполняется |
// | WSAEALREADY | Операция уже выполняется |
// | WSAENOTSOCK | Ресурс не является сокетом |
// | WSAEDESTADDRREQ | Требуется адрес назначения |
// | WSAEMSGSIZE | Размер сообщения слишком большой |
// | WSAEPROTOTYPE | Неправильный тип протокола для сокета |
// | WSAENOPROTOOPT | Ошибка протокола |
// | WSAEPROTONOSUPPORT | Протокол не поддерживается |
// | WSAESOCKTNOSUPPORT | Тип сокета не поддерживается |
// | WSAEOPNOTSUPP | Операция не поддерживается |
// | WSAEPFNOSUPPORT | Семейство протоколов не поддерживается |
// | WSAEAFNOSUPPORT | Семейство адресов не поддерживается |
// | WSAEADDRINUSE | Адрес сети недоступен |
// | WSAENETDOWN | Сеть <упала> |
// | WSAENETUNREACH | Сеть недоступна |
// | WSAENETRESET | Сетевое соединение было сброшено |
// | WSAECONNABORTED | Соединение было прервано |
// | WSAECONNRESET | Соединение было сброшено пиром |
// | WSAENOBUFS | Нет свободного места для буфера |
// | WSAEISCONN | Сокет уже подключен |
// | WSAENOTCONN | Сокет не подключен |
// | WSAESHUTDOWN | Данные не могут быть отправлены после закрытия сокета |
// | WSAETOOMANYREFS | Слишком много ссылок |
// | WSAETIMEDOUT | Время соединения вышло |
// | WSAECONNREFUSED | Соединение отклонено |
// | WSAELOOP | Имя не может быть переведено |
// | WSAENAMETOOLONG | Имя слишком длинное |
// | WSAEHOSTDOWN | Сетевой хост <упал> |
// | WSAEHOSTUNREACH | Нет маршрута к сетевому хосту |
// | WSAENOTEMPTY | Директория не является пустой |
// | WSAEPROCLIM | Слишком много процессов |
// | WSAEUSERS | Пользовательская квота была превышена |
// | WSAEDQUOT | Дисковая квота была превышена |
// | WSAESTALE | Ссылка на устаревший файловый обработчик |
// | WSAEREMOTE | Элемент удален |
// | WSASYSNOTREADY | Сетевая подсистема не готова |
// | WSAVERNOTSUPPORTED | Версия winsock.dll недоступна |
// | WSANOTINITIALISED | Успешный запуск WSAStartup не был выполнен |
// | WSAEDISCON | Тихое закрытие в процессе |
// | WSAENOMORE | Нет больше результатов |
// | WSAECANCELLED | Операция была отменена |
// | WSAEINVALIDPROCTABLE | Недопустимая таблица процедурный вызовов |
// | WSAEINVALIDPROVIDER | Недопустимый сервисный провайдер |
// | WSAEPROVIDERFAILEDINIT | Сервисный провайдер не прошел инициализацию |
// | WSASYSCALLFAILURE | Ошибка системного вызова |
// | WSASERVICE_NOT_FOUND | Сервис не был найден |
// | WSATYPE_NOT_FOUND | Тип класса не найден |
// | WSA_E_NO_MORE | Нет больше результатов |
// | WSA_E_CANCELLED | Вызов был отменен |
// | WSAEREFUSED | Запрос к базе данных был отклонен |
// ----------------------------------------------------------------------------------
// КОНСТАНТЫ LIBUV
// -------------------------------
// | Константа | Описание |
// |------------------|----------|
// | UV_UDP_REUSEADDR | |
// -------------------------------