The Eclipse Zenoh: паблик/подписка с нулевыми накладными расходами, хранилище/запросы и вычисления.
Zenoh (произносится /zeno/ ) объединяет данные в движении, данные в состоянии покоя и вычисления. Он тщательно сочетает традиционную публикацию/подписку с геораспределенными хранилищами, запросами и вычислениями, сохраняя при этом уровень эффективности времени и пространства, который значительно превосходит любой из основных стеков.
Посетите сайт zenoh.io и дорожную карту для получения более подробной информации.
API Zenoh C++ — это только заголовки привязок C++ для библиотек zenoh-c и zenoh-pico.
Привязки C++ все еще находятся в активной разработке, поэтому команда Zenoh будет очень признательна за любую помощь в их тестировании на различных платформах, системной архитектуре и т. д., а также сообщит о любых проблемах, с которыми вы можете столкнуться. Это поможет значительно улучшить его зрелость и надежность.
Единственное жесткое требование для создания библиотеки — наличие компилятора, совместимого с C++17. Для использования библиотеки требуется установка zenoh-c или zenoh-pico.
⚠️ ПРЕДУПРЕЖДЕНИЕ⚠️ : Zenoh и его экосистема находятся в стадии активного развития. При сборке из git убедитесь, что вы также собираете из git любой другой репозиторий Zenoh, который планируете использовать (например, привязку, плагин, серверную часть и т. д.). Может случиться так, что некоторые изменения в git несовместимы с самой последней упакованной версией Zenoh (например, deb, docker, pip). Мы прилагаем особые усилия для обеспечения совместимости между различными репозиториями git в проекте Zenoh.
Чтобы установить zenoh-cpp, выполните следующие действия:
Клонируйте исходники.
git-клон https://github.com/eclipse-zenoh/zenoh-cpp.git
Сборка и установка.
По умолчанию предполагается, что у вас установлен zenoh-c. Если вы хотите установить бэкэнд zenoh-pico или оба (или не указывать какой-либо бэкэнд), установите для переменных ZENOHCXX_ZENOHC
или ZENOHCXX_ZENOHPICO
Cmake значение ON
или OFF
соответственно. Обратите внимание, что для использования библиотеки и/или создания тестов и примеров требуется хотя бы один из бэкэндов.
Используйте параметр CMAKE_INSTALL_PREFIX
для указания места установки. Без этого параметра установка выполняется в системную папку по умолчанию /usr/local
, для которой требуются права root.
сборка mkdir && сборка компакт-диска cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # для настройки только для zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # для настройки только для zenoh-pico backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=OFF -DCMAKE_INSTALL_PREFIX=~/.local # для настройки ни для одного из backendscmake .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # для настройки для обоих backendscmake --install .
По умолчанию предполагается, что у вас установлен zenoh-c. Если вы хотите создать и запустить тесты для серверной части zenoh-pico или для обоих, установите для переменных ZENOHCXX_ZENOHC
или ZENOHCXX_ZENOHPICO
Cmake значение ON
или OFF
соответственно.
Чтобы построить тесты, выполните:
сборка mkdir && сборка компакт-диска cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # для построения тестов только для zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # для построения тестов только для zenoh-pico backendcmake .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # для построения тестов для обоих бэкендов scmake --build . --целевые тесты ктест
Обратите внимание, что выходные данные cmake ../zenoh-cpp
показывают, где были найдены зависимости zenoh-c и/или zenoh-pico.
Примеры разделены на два подкаталога. Подкаталог universal
содержит примеры zenoh-cpp, которые можно построить как с помощью zenoh-c, так и с помощью zenoh-pico. Подкаталог zenohc
содержит примеры со специфическими функциями zenoh-c.
По умолчанию предполагается, что у вас установлен zenoh-c. Если вы хотите создать примеры для бэкэнда zenoh-pico или для обоих, установите для переменных ZENOHCXX_ZENOHC
или ZENOHCXX_ZENOHPICO
Cmake значение ON
или OFF
соответственно.
Чтобы построить примеры, выполните:
cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # для сборки примеров только для zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # для сборки примеров только для zenoh-pico backendcmake .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # для сборки примеров для обоих backendscmake --build . --целевые примеры
Примеры помещаются в каталоги build/examples/zenohc
и build/examples/zenohpico
.
Измените текущий каталог на нужный вам вариант ( examples/zenohc
или examples/zenohpico
в каталоге сборки).
См. примеры источников аргументов командной строки (выражение ключа, значение, адрес маршрутизатора).
Примеры zenohc
могут работать автономно, но для примеров zenohpico
требуется работающий маршрутизатор zenoh. Итак, чтобы запустить примеры zenohpico
, загрузите проект zenoh и запустите маршрутизатор (должен быть установлен Rust):
git клон https://github.com/eclipse-zenoh/zenohcd zenoh грузовой пробег
./z_sub
./z_pub
z_pub
должен получить сообщение, отправленное z_sub
.
./z_queryable
./z_get
z_get
должен получать данные из z_queryable
.
./z_sub_thr_cpp
./z_pub_thr_cpp 1024
После задержки в 30–40 секунд z_sub_thr
начнет показывать результаты измерения пропускной способности.
Ниже приведены шаги по включению zenoh-cpp в проект CMake. См. также каталог example/simple, где приведены краткие примеры CMakeLists.txt.
включите zenoh-c или zenoh-pico в свой проект CMake, прежде чем устанавливать зависимость от самого zenoh-cpp. Это важно, поскольку нужные вам библиотеки ( zenohcxx::zenohpico
, zenohcxx::zenohc::lib
) определены только в том случае, если определены их цели внутренней библиотеки ( zenohpico::lib
и/или zenohc::lib
).
включите zenoh-cpp, используя функцию CMake find_package:
find_package(zenohc) #if using zenoh-c backend find_package(zenohpico) #if using zenoh-pico backend find_package(zenohcxx)
добавьте зависимость от zenoh-cpp в ваш проект:
target_link_libraries(yourproject PUBLIC zenohcxx::zenohc) #if using zenoh-c backend target_link_libraries(yourproject PUBLIC zenohcxx::zenohpico) #if using zenoh-pico backend
включите заголовок zenoh.hxx. Вся функциональность zenoh доступна в пространстве имен zenoh
:
#include "zenoh.hxx" с использованием пространства имен zenoh;
Документация находится на zenoh-cpp.readthedocs.io. Инструкции по локальной сборке документации находятся в docs/README.md.