1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-iceoryx

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 19 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 01:51 01c7879

Обзор копыт Iceoryx

Копыта Iceoryx (Handy Objects Optimised For Safety) — это наши основные строительные блоки, фундамент Iceoryx. Существует множество строительных блоков, сгруппированных в модули, в зависимости от того, где и как они используются.

Модули

В следующих разделах есть столбец с пометкой «internal», чтобы указать, что API не стабилен и может измениться в любое время. Вы никогда не должны полагаться на него, и поддержка не предоставляется, если он используется и нарушает ваш код после обновления.

Некоторые модули содержат конструкции STL, которые не являются частью стандарта C++17, а также удобные конструкции, такие как NewType. Поскольку классы повторно реализуют некоторые конструкции STL, для всех файлов в этом модуле используются рекомендации по кодированию C++ STL, чтобы помочь пользователю безболезненно перейти от официальных типов STL к нашим. API также должен быть идентичен соответствующим типам STL, но здесь мы должны сделать исключения. Например, мы не генерируем исключения, стараемся избегать неопределённого поведения и не используем динамическую память. В этих случаях мы адаптировали API под наш вариант использования.

Большинство заголовков предоставляют примеры кода о том, как следует использовать класс.

Структура модуля представляет собой логическую группировку. Она реплицируется для параллельных и POSIX-реализаций.

Управление памятью и временем жизни (memory)

Класс internal Описание
unique_ptr Предоставляет реализацию unique_ptr без кучи, в отличие от STL
RelativePointer Указатель, который можно хранить в общей памяти
relocatable_ptr
static_storage i Неупорядоченное выровненное статическое хранилище.
ScopeGuard Это абстракция идиомы C++ RAII. Иногда у вас есть конструкции, в которых вы хотели бы выполнить определённую задачу при создании, а затем снова, когда они выходят из области видимости, и здесь на помощь приходит ScopeGuard. Это похоже на std::lock_guard или std::shared_ptr, но более универсально.
scoped_static Вспомогательная функция для ограничения времени жизни статических или глобальных переменных областью действия
BumpAllocator Реализация распределителя с увеличением

Контейнер (container)

| class | internal | ### Файловая система (filesystem)

Класс internal Описание
filesystem Реализация возможностей файловой системы C++17 для экземпляра iox::access_rights и iox::perms для абстрактного представления прав доступа к файлу.
PosixAcl i Интерфейс для списков контроля доступа (ACL).
FileLock Класс-обёртка для блокировки файлов в C++.
FileReader Обёртка для открытия файлов и их чтения.

Функциональное (functional)

Класс internal Описание
storable_function i Альтернатива std::function с настраиваемым бэкендом для хранения данных в памяти.
function Замена std::function, основанная на стеке, на основе storable_function.
function_ref Реализация std::function_ref, см. предложение function_ref. Поведение аналогично std::function, но не владеет вызываемым объектом.

Утилиты (utility)

Класс internal Описание
system_configuration i Набор свободных функций, которые получают системную информацию, такую как размер страницы.
UniqueId i Монотонно увеличивающиеся идентификаторы внутри процесса.
--- ---
NamedPipe Канал IPC на основе общей памяти. В основном замена UnixDomainSocket в Windows.
PosixSharedMemoryObject Создаёт и отображает существующую общую память в приложении.
PosixMemoryMap Абстракция mmap, munmap и вспомогательный класс для PosixSharedMemoryObject.
PosixSharedMemory Абстракция общей памяти, см. ManPage shm_overview и вспомогательный класс для PosixSharedMemoryObject.

Threads & sychronisation (sync)

class internal description
PeriodicTask i Периодически выполняет вызываемый объект, указанный параметром шаблона, через настраиваемый промежуток времени.
smart_lock Создает произвольные потокобезопасные конструкции, которые затем можно использовать как интеллектуальные указатели. Если какой-то тип STL должен быть потокобезопасным, используйте smart_lock для создания потокобезопасной версии в одну строку. Основан на некоторых идеях, представленных в Wrapping C++ Member Function Calls
mutex i Интерфейс мьютекса, см. ManPage pthread_mutex_lock.
UnnamedSemaphore Интерфейс безымянного семафора, см. ManPage sem_overview
NamedSemaphore Интерфейс именованного семафора, см. ManPage sem_overview
thread Замена без кучи для std::thread.
SignalGuard Вспомогательный класс для регистрации обработчиков сигналов.
SignalWatcher Комплексная обработка сигналов с батарейками в комплекте. Опрос и опциональное блокирующее ожидание для SIGINT и SIGTERM

Обобщённые шаблоны проектирования и абстракции (дизайн)

Класс Внутренний Описание
Builder Макрос, который генерирует метод установки, полезный для шаблона построителя.
IOX_POSIX_CALL Обертка вокруг вызовов функций C и POSIX, которая выполняет полную обработку ошибок. Кроме того, эта оболочка обеспечивает правильную обработку EINTR, повторяя системный вызов.
functional_interface Конструкции, позволяющие легко добавлять функциональные интерфейсы, такие как and_then, в контейнер объектов.
NewType<T, Policies> Реализация паттерна NewType в Haskell.
StaticLifetimeGuard Статический менеджер экземпляров, который решает проблему времени жизни синглтона.
PolymorphicHandler Обработчик синглтона с экземпляром по умолчанию, который можно изменить во время выполнения.

Отчётность (отчётность)

Обработчик ошибок является центральным экземпляром для сбора всех ошибок и реагирования на них. В error-handling.hpp содержится список всех значений перечисления ошибок. Обработчик ошибок имеет разные уровни ошибок, для получения дополнительной информации см. error-handling.md. Для получения информации о том, как использовать API регистратора, см. error-handling.md.

Класс Внутренний Описание
errorHandler Свободная функция для вызова обработчика ошибок с определённой ошибкой и уровнем ошибки, см. заголовочный файл для практического примера.
ErrorHandler i класс обработчика ошибок только для целей тестирования, не должен использоваться напрямую
logger
requires Основа для IOX_EXPECTS/IOX_ENSURES из основного руководства C++

Время (время)

Никогда не используйте физические свойства, такие как скорость или время, непосредственно как целое число или число с плавающей запятой в вашем коде. В противном случае вы столкнётесь с такими проблемами, как эта функция void setTimeout(int timeout). Что является единицей аргумента, секунды? минуты? Если вы используете Duration, вы видите это непосредственно в коде.

void setTimeout(const Duration & timeout);

setTimeout(11_s); // 11 секунд
setTimeout(5_ms); // 5 миллисекунд
Класс Внутренний Описание
Duration i Представляет единицу времени, преобразуется в timespec и timeval. Для удобства и читаемости доступны определяемые пользователем литералы.
deadline_timer Таймер на основе опроса для проверки истекшего срока.
:----------: :--: :---------------------------------------------------------------------------------:

Authentication (auth)

class internal description
posix_group Доступ к информации о пользователе.
posix_user Доступ к информации о группе.

Comand line interface (cli)

component internal description
cli_definition Классы и макросы для создания интерфейсов командной строки.
[Check out iceoryx_hoofs on GitHub](https://github.com/eclipse-iceoryx/iceoryx/tree/main/iceoryx_hoofs/)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-iceoryx.git
git@api.gitlife.ru:oschina-mirror/mirrors-iceoryx.git
oschina-mirror
mirrors-iceoryx
mirrors-iceoryx
main