Hi @gardenest ,
Yes, in your Eval function, you can call
GetRequest::reply()as many time as you want.
Just notice that if you send several replies with a same Path, the consolidation mode configured by default in the zenoh API will make that your requester will only receive 1 value per Path (the one with the mre recent timestamp). But I guess you probably want to send replies with different Paths, right ?
@JEnoch Actually I need one Path with multiple replies and client need to receive all replies, is that possible?
Yes, it is possible: currently the way for the requester to specify that he wants several replies for a same Path is to set the
starttime and/or the
stoptime as properties in the Selector.
That’s for instance used to query the InfluxDB backend. See example of use here:
Just know that the values of
stoptime properties are not interpreted by the zenoh infrastructure itself, but by the receiver of the GetRequest. I.e. the InfluxDB backend, or your Eval function in your case.
The InfluxDB backend, for instance, uses the values of
stoptime in the DB query it does to retrieve the time-serie to reply.
Your Eval function could interpret those
stoptime values in the way you want (or just ignore them). The only missing part we currently have is that in zenoh API, there is no way yet to specify a timestamp with the Value you replies. The timestamp is automatically generated by zenoh when replying, and it could therefore not match the time interval specified in the Selector.
But that might not be an issue for your use case if you don’t care about timestamps.
zenoh-python(the repo is https://github.com/luca-della-vedova/robocom-benchmarks, with the relevant functions being testZenoh and the zenoh subfolder). I keep getting errors in connection when TLS is enabled and wireshark shows no packets going through, I wonder if you had any input? I'm using the deb version of zenoh and I built zenoh-python from source, specifically the error is:
[2021-06-07T08:17:06Z ERROR zenoh::net::runtime::orchestrator] Unable to connect to any of [Tls(SocketAddr(10.0.0.1:7447))]!.
arm64/x86platforms without having to maintain distinct Dockerfiles for each platforms.
*.soyou built this way, which maximal GLIBC version they require (check with
ldd -v zenohd *.so | grep GLIBC) ? I manage to cross-build binaries for
armv7lusing a specific Dockerfile, but unfortunately the resulting
libzplugin_storages.sorequires GLIBC 2.29 which is greater than the default one on Raspberry Pi OS (2.28)
Hello @gardenest, this is indeed strange. You should see all reachable routers and peers with zn_scout.
There is a difference between zn_info and zn_scout that could explain this behavior :
So maybe part of your peers are not reachable through multicast but are discovered by zn_info and other peers by gossip discovery (through the router probably).
use zenoh::net::*; let mut config = config::peer(); config.insert(config::ZN_MULTICAST_ADDRESS_KEY, "220.127.116.11:7448".to_string()); let session = open(config).await.unwrap();
aarch64for a Pi4 (2GB) and I started the router
./zenohdand followed the steps in the documentation of setting up a local memory storage and tried putting
hello worldon the API. Upon querying the data I get
[ ]although the paths are the same.
--mem-storage /demo/example/**parameter for
RUST_LOG=debug ./target/release/zenoh-bridge-dds -m peer
ros2 run examples_rclcpp_minimal_publisher publisher_member_function
<?xml version="1.0" encoding="UTF-8"?> <CycloneDDS xmlns="https://cdds.io/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://cdds.io/config https://raw.githubusercontent.com/eclipse-cyclonedds/cyclonedds/master/etc/cyclonedds.xsd"> <Domain id="any"> <Discovery> <ParticipantIndex> auto </ParticipantIndex> <MaxAutoParticipantIndex> 30 </MaxAutoParticipantIndex> </Discovery> </Domain> </CycloneDDS>
arm64and if someone has a Raspberry Pi 4 with docker lying around please give
docker run --init -p 7447:7447/tcp -p 7447:7447/udp -p 8000:8000/tcp shantanoodesai/zenoha spin
zenohas well as Docker images can be built effortlessly for all possible platforms