The Eclipse Zenoh: Zero Overhead Pub/sub، المتجر/الاستعلام والحوسبة.
Zenoh (تلفظ /zeno/ ) يوحد البيانات المتحركة والبيانات الساكنة والحسابات. فهو يمزج بعناية النشر/الفرعي التقليدي مع وحدات التخزين والاستعلامات والحسابات الموزعة جغرافيًا، مع الحفاظ على مستوى من كفاءة الوقت والمساحة يتجاوز بكثير أي من الحزم الرئيسية.
تحقق من موقع الويب zenoh.io وخريطة الطريق للحصول على معلومات أكثر تفصيلاً.
تعد Zenoh C++ API عبارة عن رؤوس فقط لروابط C++ لمكتبات zenoh-c وzenoh-pico.
لا تزال روابط C++ قيد التطوير النشط، لذا سيقدر فريق Zenoh بشدة أي مساعدة في اختبارها على منصات مختلفة، وبنية النظام، وما إلى ذلك، والإبلاغ عن أي مشكلة قد تواجهها. وهذا سوف يساعد بشكل كبير في تحسين نضجها وقوتها.
الشرط الوحيد الصعب لبناء المكتبة هو مترجم متوافق مع C++ 17. يتطلب استخدام المكتبة تثبيت zenoh-c أو zenoh-pico.
⚠️ تحذير⚠️ : Zenoh ونظامها البيئي قيد التطوير النشط. عندما تقوم بالإنشاء من git، تأكد أيضًا من إنشاء أي مستودع Zenoh آخر تخطط لاستخدامه من git (على سبيل المثال، الربط، البرنامج الإضافي، الواجهة الخلفية، وما إلى ذلك). قد يحدث أن بعض التغييرات في git غير متوافقة مع أحدث إصدار من Zenoh (على سبيل المثال، deb، docker، pip). لقد بذلنا جهدًا خاصًا للحفاظ على التوافق بين مستودعات git المختلفة في مشروع Zenoh.
لتثبيت zenoh-cpp قم بالخطوات التالية:
استنساخ المصادر.
استنساخ بوابة https://github.com/Eclipse-zenoh/zenoh-cpp.git
بناء وتثبيت.
بشكل افتراضي، من المتوقع أن يكون لديك zenoh-c مثبتًا. إذا كنت تريد التثبيت لواجهة zenoh-pico الخلفية أو لكليهما (أو عدم تحديد أي واجهة خلفية)، فيرجى ضبط متغيرات ZENOHCXX_ZENOHC
أو ZENOHCXX_ZENOHPICO
Cmake على ON
أو OFF
وفقًا لذلك. لاحظ أن واحدة على الأقل من الواجهات الخلفية مطلوبة لاستخدام المكتبة و/أو إنشاء الاختبارات والأمثلة.
استخدم الخيار CMAKE_INSTALL_PREFIX
لتحديد موقع التثبيت. بدون هذه المعلمة، يتم إجراء التثبيت إلى موقع النظام الافتراضي /usr/local
الذي يتطلب امتيازات الجذر.
بناء mkdir && بناء القرص المضغوط cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # للتكوين فقط للواجهة الخلفية zenoh-ccmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # للتكوين فقط للواجهة الخلفية zenoh-picocmake .. -DZENOHCXX_ZENOHC= OFF -DZENOHCXX_ZENOHPICO=OFF -DCMAKE_INSTALL_PREFIX=~/.local # للتكوين بدون أي من الواجهات الخلفيةscmake .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # للتكوين لكلا الواجهتين الخلفيتين scmake --install .
بشكل افتراضي، من المتوقع أن يكون لديك zenoh-c مثبتًا. إذا كنت ترغب في إنشاء اختبارات وتشغيلها للواجهة الخلفية zenoh-pico أو لكليهما، فيرجى ضبط متغيرات ZENOHCXX_ZENOHC
أو ZENOHCXX_ZENOHPICO
Cmake على ON
أو OFF
وفقًا لذلك.
لبناء الاختبارات تشغيل:
بناء mkdir && بناء القرص المضغوط cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # لبناء اختبارات فقط للواجهة الخلفية zenoh-ccmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # لبناء الاختبارات فقط للواجهة الخلفية zenoh-pico .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # لإنشاء اختبارات لكل من الواجهات الخلفية scmake --build . - اختبارات الهدف com.ctest
لاحظ أن إخراج 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 الخلفية cmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # لبناء أمثلة فقط لواجهة zenoh-pico الخلفية cmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # لإنشاء أمثلة لكل من الواجهات الخلفية scmake --build . - أمثلة الهدف
يتم وضع الأمثلة في أدلة build/examples/zenohc
و build/examples/zenohpico
.
قم بتغيير الدليل الحالي إلى المتغير الذي تريده ( examples/zenohc
أو examples/zenohpico
في دليل البناء).
راجع مصادر الأمثلة لوسائط سطر الأوامر (تعبير المفتاح، القيمة، عنوان جهاز التوجيه).
يمكن أن تعمل أمثلة zenohc
بشكل مستقل، ولكن بالنسبة لأمثلة zenohpico
، يلزم وجود جهاز توجيه zenoh يعمل. لذا، لتشغيل أمثلة zenohpico
، قم بتنزيل مشروع zenoh وتشغيل جهاز التوجيه (يجب تثبيت Rust):
استنساخ بوابة 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. راجع أيضًا الأمثلة/الدليل البسيط للحصول على أمثلة قصيرة لملف CMakeLists.txt.
قم بتضمين zenoh-c أو zenoh-pico في مشروع CMake الخاص بك قبل الاعتماد على zenoh-cpp نفسه. هذا مهم لأن أهداف المكتبة التي تحتاجها ( zenohcxx::zenohpico
, zenohcxx::zenohc::lib
) محددة فقط إذا كانت أهداف المكتبة الخلفية الخاصة بها ( zenohpico::lib
و/أو zenohc::lib
محددة)
قم بتضمين zenoh-cpp باستخدام وظيفة find_package CMake:
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
:
# تضمين "zenoh.hxx" باستخدام مساحة الاسم zenoh؛
الوثائق موجودة على zenoh-cpp.readthedocs.io. توجد تعليمات حول كيفية إنشاء الوثائق محليًا على docs/README.md.