@zerodds/node — ZeroDDS TypeScript Node binding
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.0as 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 participantsDomainParticipant— domain lifecycle, RAIITopic<T>— topic + type traitsPublisher/DataWriter<T>— pub sideSubscriber/DataReader<T>— sub sideGuardCondition/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.
Links
- Spec coverage:
docs/spec-coverage/zerodds-c-api-1.0.md - Vendor spec:
docs/specs/zerodds-c-api-1.0.md - CHANGELOG:
crates/ts-node/CHANGELOG.md →
@zerodds/node — ZeroDDS TypeScript-Node-Binding
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.0als 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 ParticipantsDomainParticipant— Domain-Lifecycle, RAIITopic<T>— Topic + Type-TraitsPublisher/DataWriter<T>— Pub-SideSubscriber/DataReader<T>— Sub-SideGuardCondition/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.
Links
- Spec-Coverage:
docs/spec-coverage/zerodds-c-api-1.0.md - Vendor-Spec:
docs/specs/zerodds-c-api-1.0.md - CHANGELOG:
crates/ts-node/CHANGELOG.md →