Jak zapisovat a číst data v DDS aplikaci

V příspěvku Co tvoří DDS aplikaci a doporučení pro implementaci jsme si řekli, co tvoří DDS aplikaci. Že se jedná o entity

  • DomainParticipant,
  • Topic,
  • Publisher,
  • Subscriber,
  • DataWriter
  • DataReader.

V tomto videu se podíváme na to, jakým způsobem je možné zapisovat a číst data 🎞️👇.

Aplikace zapisuje data pomocí DataWriterů➡ a čte data pomocí DataReaderů⬅.

Každý DataWriter a DataReader má k sobě přiřazen jeden Topic. Např. Movement (id, position, orientation, speed).

API pro zápis je jednoduché, jedná se o write tato operace je neblokovaná jak byste od publish subscribe modelu komunikace očekávali. Nicméně write operace může být blokována, a to v případě, kdy je nutné zabránit ztrátě dat.

U operace pro čtení to je zajímavější.

Informaci o nově příchozích datech můžete získat pomocí
👉 Listeneru asynchronně – pomocí callbacku.
👉 WaitSetu synchronně – pomocí vlastního threadu s čekáním na nově příchozí data.

Když potřebujete data číst tak to můžete provést pomocí dvou API.
👉 Read – vzorky zůstávají v cache
👉 Take – vzorky jsou odebrán z cache

A můžete si vybírat data, která čtete a to na základě
👉 Obsahu – jsme schopni filtrovat data, která se dostanou do cache a provádět výběr dat nad daty v cache pomocí klauzule WHERE.
👉 Stavu instance, nebo vzorku – pomocí metadat, které nám middleware poskytuje jsme schopni detekovat změny stavů a reagovat na ně (vzorek přečten/nepřečten, instance nově přidaná, instance je aktivní/neaktivní/zrušena). V základu čteme nepřečtené vzorky od všech aktivních instancí.

Nyní tedy už víte, co vám DDS umožňuje při zápisu a hlavně při čtení vzorků.

Mimochodem připravuji trénink, kde ukazuji nadhled, souvislosti a kontext ve kterém uvažovat o technologii DDS. Jestli by vás takový trénink zajímal, tak se podívejte na stránku www.pavelpohanka.cz/technologie, kde se po zadání emailu budete moci o tréninku dozvědět více.

PP
Author: PP

Podobné příspěvky

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *