@zerodds/node — ZeroDDS TypeScript Node binding

License

TypeScript bindings for ZeroDDS in Node.js via the koffi FFI against libzerodds.dylib / .so / .dll (from crates/zerodds-c-api).

Spec

  • OMG DDS 1.4 (formal/2015-04-10) §2.2.2 — DCPS API
  • OMG DDS-PSM-Cxx 1.0 (formal/2013-11-01) §7.5 — adapted to TypeScript idioms
  • ZeroDDS vendor spec zerodds-c-api-1.0 as the FFI foundation

Layer

Layer 6 — PSMs / bindings.

Quickstart

import {
  DomainParticipantFactory, Topic, Publisher, DataWriter,
  Subscriber, DataReader, ByteSeqTraits,
} from "@zerodds/node";

const dp = DomainParticipantFactory.createParticipant(0);
const t = Topic.create(dp, "Chatter", ByteSeqTraits);
const pub = Publisher.create(dp);
const dw = DataWriter.create(pub, t);
const sub = Subscriber.create(dp);
const dr = DataReader.create(sub, t);

dw.write(new Uint8Array([1, 2, 3, 4]));

dr.destroy();
sub.destroy();
dw.destroy();
pub.destroy();
t.destroy();
dp.destroy();

Build

# build libzerodds first
cargo build --release -p zerodds-c-api

# then the TS module
cd crates/ts-node
npm install
npm run build
npm test

API

  • DomainParticipantFactory — singleton, creates participants
  • DomainParticipant — domain lifecycle, RAII
  • Topic<T> — topic + type traits
  • Publisher / DataWriter<T> — pub side
  • Subscriber / DataReader<T> — sub side
  • GuardCondition / WaitSet — conditions
  • Legacy: Runtime / Writer / Reader (type-erased path)

Stability

Pre-1.0 — the API may change. The RC1-conformant spec API is the DomainParticipantFactory-based surface; the legacy Runtime API stays stable for Apex.AI / ROS-2-RMW use cases.

@zerodds/node — ZeroDDS TypeScript-Node-Binding

License

TypeScript-Bindings für ZeroDDS in Node.js via koffi-FFI gegen libzerodds.dylib / .so / .dll (aus crates/zerodds-c-api).

Spec

  • OMG DDS 1.4 (formal/2015-04-10) §2.2.2 — DCPS-API
  • OMG DDS-PSM-Cxx 1.0 (formal/2013-11-01) §7.5 — adaptiert auf TypeScript-Idiome
  • ZeroDDS Vendor-Spec zerodds-c-api-1.0 als FFI-Foundation

Layer

Layer 6 — PSMs / Bindings.

Quickstart

import {
  DomainParticipantFactory, Topic, Publisher, DataWriter,
  Subscriber, DataReader, ByteSeqTraits,
} from "@zerodds/node";

const dp = DomainParticipantFactory.createParticipant(0);
const t = Topic.create(dp, "Chatter", ByteSeqTraits);
const pub = Publisher.create(dp);
const dw = DataWriter.create(pub, t);
const sub = Subscriber.create(dp);
const dr = DataReader.create(sub, t);

dw.write(new Uint8Array([1, 2, 3, 4]));

dr.destroy();
sub.destroy();
dw.destroy();
pub.destroy();
t.destroy();
dp.destroy();

Build

# Erst libzerodds bauen
cargo build --release -p zerodds-c-api

# Dann TS-Module
cd crates/ts-node
npm install
npm run build
npm test

API

  • DomainParticipantFactory — Singleton, erzeugt Participants
  • DomainParticipant — Domain-Lifecycle, RAII
  • Topic<T> — Topic + Type-Traits
  • Publisher / DataWriter<T> — Pub-Side
  • Subscriber / DataReader<T> — Sub-Side
  • GuardCondition / WaitSet — Conditions
  • Legacy: Runtime / Writer / Reader (typgelöschter Pfad)

Stabilitaet

Pre-1.0 — API kann sich aendern. RC1-konformer Spec-API ist DomainParticipantFactory-basierte Surface; Legacy Runtime-API bleibt fuer Apex.AI-/ROS-2-RMW-Use-Cases stabil.