Обзор копыт Iceoryx
Копыта Iceoryx (Handy Objects Optimised For Safety) — это наши основные строительные блоки, фундамент Iceoryx. Существует множество строительных блоков, сгруппированных в модули, в зависимости от того, где и как они используются.
В следующих разделах есть столбец с пометкой «internal», чтобы указать, что API не стабилен и может измениться в любое время. Вы никогда не должны полагаться на него, и поддержка не предоставляется, если он используется и нарушает ваш код после обновления.
Некоторые модули содержат конструкции STL, которые не являются частью стандарта C++17, а также удобные конструкции, такие как NewType. Поскольку классы повторно реализуют некоторые конструкции STL, для всех файлов в этом модуле используются рекомендации по кодированию C++ STL, чтобы помочь пользователю безболезненно перейти от официальных типов STL к нашим. API также должен быть идентичен соответствующим типам STL, но здесь мы должны сделать исключения. Например, мы не генерируем исключения, стараемся избегать неопределённого поведения и не используем динамическую память. В этих случаях мы адаптировали API под наш вариант использования.
Большинство заголовков предоставляют примеры кода о том, как следует использовать класс.
Структура модуля представляет собой логическую группировку. Она реплицируется для параллельных и POSIX-реализаций.
Класс | 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 | Реализация распределителя с увеличением |
| class | internal | ### Файловая система (filesystem)
Класс | internal | Описание |
---|---|---|
filesystem |
Реализация возможностей файловой системы C++17 для экземпляра iox::access_rights и iox::perms для абстрактного представления прав доступа к файлу. |
|
PosixAcl |
i | Интерфейс для списков контроля доступа (ACL). |
FileLock |
Класс-обёртка для блокировки файлов в C++. | |
FileReader |
Обёртка для открытия файлов и их чтения. |
Класс | internal | Описание |
---|---|---|
storable_function |
i | Альтернатива std::function с настраиваемым бэкендом для хранения данных в памяти. |
function |
Замена std::function , основанная на стеке, на основе storable_function . |
|
function_ref |
Реализация std::function_ref , см. предложение function_ref. Поведение аналогично std::function , но не владеет вызываемым объектом. |
Класс | internal | Описание |
---|---|---|
system_configuration |
i | Набор свободных функций, которые получают системную информацию, такую как размер страницы. |
UniqueId |
i | Монотонно увеличивающиеся идентификаторы внутри процесса. |
--- | --- | |
NamedPipe | Канал IPC на основе общей памяти. В основном замена UnixDomainSocket в Windows. | |
PosixSharedMemoryObject | Создаёт и отображает существующую общую память в приложении. | |
PosixMemoryMap | Абстракция mmap, munmap и вспомогательный класс для PosixSharedMemoryObject. | |
PosixSharedMemory | Абстракция общей памяти, см. ManPage shm_overview и вспомогательный класс для PosixSharedMemoryObject. |
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 |
Таймер на основе опроса для проверки истекшего срока. | |
:----------: | :--: | :---------------------------------------------------------------------------------: |
class | internal | description |
---|---|---|
posix_group | Доступ к информации о пользователе. | |
posix_user | Доступ к информации о группе. |
component | internal | description |
---|---|---|
cli_definition | Классы и макросы для создания интерфейсов командной строки. |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )