Git Product home page Git Product logo

ros2middleware / zenoh Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eclipse-zenoh/zenoh

0.0 0.0 0.0 3.23 MB

zenoh unifies data in motion, data in-use, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

Home Page: https://zenoh.io

License: Other

Dockerfile 0.50% Rust 99.32% Python 0.06% Shell 0.12%

zenoh's Introduction

CI Documentation Status Gitter License License

Eclipse zenoh

The Eclipse zenoh: Zero Overhead Pub/sub, Store/Query and Compute.

Eclipse zenoh (pronounce /zeno/) unifies data in motion, data in-use, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.

Check the website zenoh.io for more detailed information.


How to install and test it

See our "Getting started" tour starting with the zenoh key concepts.


How to build it

Install Cargo and Rust. Zenoh can be succesfully compiled with Rust stable (>= 1.5.1), so no special configuration is required from your side.
To build zenoh, just type the following command after having followed the previous instructions:

$ cargo build --release --all-targets

The zenoh router is built as target/release/zenohd. All the examples are built into the target/release/examples directory. They can all work in peer-to-peer, or interconnected via the zenoh router.


Quick tests of your build:

Peer-to-peer tests:

  • pub/sub

    • run: ./target/release/examples/z_sub
    • in another shell run: ./target/release/examples/z_put
    • the subscriber should receive the publication.
  • get/eval

    • run: ./target/release/examples/z_eval
    • in another shell run: ./target/release/examples/z_get
    • the eval should display the log in it's listener, and the get should receive the eval result.

Routed tests:

  • put/store/get

    • run the zenoh router with a memory storage:
      ./target/release/zenohd --mem-storage '/demo/example/**'
    • in another shell run: ./target/release/examples/z_put
    • then run ./target/release/examples/z_get
    • the get should receive the stored publication.
  • REST API using curl tool

    • run the zenoh router with a memory storage:
      ./target/release/zenohd --mem-storage '/demo/example/**'
    • in another shell, do a publication via the REST API:
      curl -X PUT -d 'Hello World!' http://localhost:8000/demo/example/test
    • get it back via the REST API:
      curl http://localhost:8000/demo/example/test
  • router admin space via the REST API

    • run the zenoh router with a memory storage:
      ./target/release/zenohd --mem-storage '/demo/example/**'
    • in another shell, get info of the zenoh router via the zenoh admin space:
      curl http://localhost:8000/@/router/local
    • get the backends of the router (only memory by default):
      curl 'http://localhost:8000/@/router/local/**/backend/*'
    • get the storages of the local router (the memory storage configured at startup on '/demo/example/**' should be present):
      curl 'http://localhost:8000/@/router/local/**/storage/*'
    • add another memory storage on /demo/mystore/**:
      curl -X PUT -H 'content-type:application/properties' -d 'path_expr=/demo/mystore/**' http://localhost:8000/@/router/local/plugin/storages/backend/memory/storage/my-storage
    • check it has been created:
      curl 'http://localhost:8000/@/router/local/**/storage/*'

See other examples of zenoh usage:

zenoh's People

Contributors

olivierhecart avatar mallets avatar jenoch avatar kydos avatar gabrik avatar esteve avatar jerry73204 avatar cguimaraes avatar p-avital avatar bfrog avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.