O Eclipse Zenoh: zero sobrecarga pub/sub, armazenamento/consulta e computação.
Zenoh (pronuncia-se /zeno/ ) unifica dados em movimento, dados em repouso e cálculos. Ele combina cuidadosamente o pub/sub tradicional com armazenamentos, consultas e cálculos distribuídos geograficamente, ao mesmo tempo que mantém um nível de eficiência de tempo e espaço que está muito além de qualquer uma das pilhas convencionais.
Verifique o site zenoh.io e o roteiro para informações mais detalhadas.
A API Zenoh C++ são ligações C++ apenas de cabeçalhos para bibliotecas zenoh-c e zenoh-pico.
As ligações C++ ainda estão em desenvolvimento ativo, portanto a equipe Zenoh apreciará muito qualquer ajuda para testá-las em várias plataformas, arquitetura de sistema, etc., e para relatar qualquer problema que possa encontrar. Isso ajudará a melhorar significativamente sua maturidade e robustez.
O único requisito difícil para construir a biblioteca é um compilador compatível com C++17. O uso da biblioteca requer a instalação do zenoh-c ou zenoh-pico.
⚠️ AVISO⚠️ : Zenoh e seu ecossistema estão em desenvolvimento ativo. Ao construir a partir do git, certifique-se de construir também a partir do git qualquer outro repositório Zenoh que você planeja usar (por exemplo, ligação, plugin, backend, etc.). Pode acontecer que algumas alterações no git não sejam compatíveis com a versão empacotada mais recente do Zenoh (por exemplo, deb, docker, pip). Colocamos um esforço especial em manter a compatibilidade entre os vários repositórios git no projeto Zenoh.
Para instalar o zenoh-cpp siga os seguintes passos:
Clone as fontes.
clone do git https://github.com/eclipse-zenoh/zenoh-cpp.git
Construa e instale.
Por padrão, espera-se que você tenha o zenoh-c instalado. Se você deseja instalar para backend zenoh-pico ou para ambos (ou não especificar nenhum backend), defina as variáveis Cmake ZENOHCXX_ZENOHC
ou ZENOHCXX_ZENOHPICO
como ON
ou OFF
de acordo. Observe que pelo menos um dos backends é necessário para usar a biblioteca e/ou construir testes e exemplos.
Use a opção CMAKE_INSTALL_PREFIX
para especificar o local de instalação. Sem este parâmetro, a instalação é executada no local padrão do sistema /usr/local
, que requer privilégios de root.
compilação mkdir && compilação cd cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # para configurar apenas para backendcmake zenoh-c .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # para configurar apenas para backendcmake zenoh-pico .. -DZENOHCXX_ZENOHC= OFF -DZENOHCXX_ZENOHPICO=OFF -DCMAKE_INSTALL_PREFIX=~/.local # para configurar nenhum dos backendscmake .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # para configurar ambos os backendscmake --install .
Por padrão, espera-se que você tenha o zenoh-c instalado. Se você deseja construir e executar testes para backend zenoh-pico ou para ambos, defina as variáveis Cmake ZENOHCXX_ZENOHC
ou ZENOHCXX_ZENOHPICO
como ON
ou OFF
de acordo.
Para construir testes, execute:
compilação mkdir && compilação cd cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # para construir testes apenas para zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # para construir testes apenas para zenoh-pico backendcmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # para construir testes para ambos os backendscmake --build . --testes de destino teste
Observe que a saída de cmake ../zenoh-cpp
mostra onde zenoh-c e/ou zenoh-pico as dependências foram encontradas.
Os exemplos são divididos em dois subdiretórios. O subdiretório universal
contém exemplos de zenoh-cpp que podem ser construídos com back-ends zenoh-c e zenoh-pico. O subdiretório zenohc
contém exemplos com funcionalidades específicas do zenoh-c.
Por padrão, espera-se que você tenha o zenoh-c instalado. Se você deseja construir exemplos para backend zenoh-pico ou para ambos, defina as variáveis ZENOHCXX_ZENOHC
ou ZENOHCXX_ZENOHPICO
Cmake como ON
ou OFF
de acordo.
Para construir exemplos, execute:
cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # para construir exemplos apenas para zenoh-c backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # para construir exemplos apenas para zenoh-pico backendcmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # para construir exemplos para ambos os backendscmake --build . --target exemplos
Os exemplos são colocados nos diretórios build/examples/zenohc
e build/examples/zenohpico
.
Mude o diretório atual para a variante desejada ( examples/zenohc
ou examples/zenohpico
no diretório de construção).
Veja exemplos de fontes para argumentos de linha de comando (expressão chave, valor, endereço do roteador).
Os exemplos zenohc
podem funcionar de forma independente, mas para os exemplos zenohpico
é necessário o roteador zenoh funcional. Então, para executar os exemplos zenohpico
, baixe o projeto zenoh e execute o roteador (o Rust deve estar instalado):
clone do git https://github.com/eclipse-zenoh/zenohcd zenoh corrida de carga
./z_sub
./z_pub
O z_pub
deverá receber mensagem enviada por z_sub
.
./z_queryable
./z_get
O z_get
deve receber os dados de z_queryable
.
./z_sub_thr_cpp
./z_pub_thr_cpp 1024
Após um atraso de 30 a 40 segundos, o z_sub_thr
começará a mostrar os resultados da medida de rendimento.
Abaixo estão as etapas para incluir zenoh-cpp no projeto CMake. Veja também exemplos/diretório simples para exemplos curtos de CMakeLists.txt.
inclua zenoh-c ou zenoh-pico em seu projeto CMake antes de depender do próprio zenoh-cpp. Isso é importante porque os alvos da biblioteca que você precisa ( zenohcxx::zenohpico
, zenohcxx::zenohc::lib
) são definidos apenas se seus alvos de biblioteca backend ( zenohpico::lib
e/ou zenohc::lib
estiverem definidos)
inclua zenoh-cpp usando a função find_package CMake:
find_package(zenohc) #if using zenoh-c backend find_package(zenohpico) #if using zenoh-pico backend find_package(zenohcxx)
adicione dependência de zenoh-cpp ao seu projeto:
target_link_libraries(yourproject PUBLIC zenohcxx::zenohc) #if using zenoh-c backend target_link_libraries(yourproject PUBLIC zenohcxx::zenohpico) #if using zenoh-pico backend
inclua o cabeçalho zenoh.hxx. Todas as funcionalidades do zenoh estão disponíveis no namespace zenoh
:
#include "zenoh.hxx"usando o namespace zenoh;
A documentação está em zenoh-cpp.readthedocs.io. As instruções sobre como construir a documentação localmente estão em docs/README.md.