Skip to content

Commit 73234ba

Browse files
rustecal-types-bytes ready to publish (#28)
1 parent 4b7c1f1 commit 73234ba

File tree

6 files changed

+118
-7
lines changed

6 files changed

+118
-7
lines changed

rustecal-types-bytes/Cargo.toml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
[package]
22
name = "rustecal-types-bytes"
33
version = "0.1.0"
4+
authors = ["Rex Schilasky"]
45
edition = "2021"
56
description = "Vec<u8> type support for rustecal TypedPublisher / TypedSubscriber"
67
license = "Apache-2.0"
8+
repository = "https://github.com/eclipse-ecal/rustecal"
9+
homepage = "https://github.com/eclipse-ecal/rustecal"
10+
documentation = "https://docs.rs/rustecal-pubsub"
11+
readme = "README.md"
12+
keywords = ["ecal", "ipc", "pubsub", "message-support", "middleware"]
13+
categories = ["network-programming", "api-bindings"]
714

815
[dependencies]
9-
rustecal-core = { path = "../rustecal-core" }
10-
rustecal-pubsub = { path = "../rustecal-pubsub" }
11-
16+
rustecal-core = { version = "0.1.0", path = "../rustecal-core" }
17+
rustecal-pubsub = { version = "0.1.0", path = "../rustecal-pubsub" }

rustecal-types-bytes/README.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# rustecal-types-bytes
2+
3+
`rustecal-types-bytes` provides a simple wrapper for arbitrary binary data (`Arc<[u8]>`) to use with the typed eCAL Pub/Sub API.
4+
5+
## Features
6+
7+
- **BytesMessage**: wrap and transport raw binary payloads
8+
- Implements `PublisherMessage` and `SubscriberMessage` for seamless integration
9+
- Zero-copy where possible via `Arc<[u8]>`
10+
- No extra dependencies beyond `rustecal-core` and `rustecal-pubsub`
11+
12+
## Installation
13+
14+
Add to your **workspace** `Cargo.toml`:
15+
16+
```toml
17+
[dependencies]
18+
rustecal-types-bytes = "0.1"
19+
```
20+
21+
## Usage
22+
23+
### Publisher Example
24+
25+
```rust
26+
use std::sync::Arc;
27+
use rustecal::{Ecal, EcalComponents, TypedPublisher};
28+
use rustecal_types_bytes::BytesMessage;
29+
30+
fn main() -> Result<(), Box<dyn std::error::Error>> {
31+
Ecal::initialize(Some("blob publisher"), EcalComponents::DEFAULT)?;
32+
33+
let publisher = TypedPublisher::<BytesMessage>::new("blob")?;
34+
35+
let mut counter = 0u8;
36+
while Ecal::ok() {
37+
let buf = vec![counter; 1024];
38+
counter = counter.wrapping_add(1);
39+
40+
let message = BytesMessage { data: Arc::from(buf) };
41+
publisher.send(&message);
42+
43+
std::thread::sleep(std::time::Duration::from_millis(500));
44+
}
45+
46+
Ecal::finalize();
47+
Ok(())
48+
}
49+
```
50+
51+
### Subscriber Example
52+
53+
```rust
54+
use rustecal::{Ecal, EcalComponents, TypedSubscriber};
55+
use rustecal_types_bytes::BytesMessage;
56+
57+
fn main() -> Result<(), Box<dyn std::error::Error>> {
58+
Ecal::initialize(Some("blob subscriber"), EcalComponents::DEFAULT)?;
59+
60+
let mut subscriber = TypedSubscriber::<BytesMessage>::new("blob")?;
61+
subscriber.set_callback(|message| {
62+
println!("Received blob of {} bytes", message.payload.data.len());
63+
});
64+
65+
while Ecal::ok() {
66+
std::thread::sleep(std::time::Duration::from_millis(500));
67+
}
68+
69+
Ecal::finalize();
70+
Ok(())
71+
}
72+
```
73+
74+
## Traits Reference
75+
76+
- **`PublisherMessage`**
77+
- `datatype() -> DataTypeInfo`
78+
- `to_bytes(&self) -> Arc<[u8]>`
79+
80+
- **`SubscriberMessage`**
81+
- `datatype() -> DataTypeInfo`
82+
- `from_bytes(bytes: Arc<[u8]>, _info: &DataTypeInfo) -> Option<Self>`
83+
84+
## See Also
85+
86+
- `rustecal-types-string` for UTF-8 string messages
87+
- `rustecal-types-protobuf` for Protobuf-based messages
88+
- `rustecal-types-serde` for JSON/CBOR/MessagePack via Serde
89+
- Examples in the `rustecal-samples/pubsub` directory

rustecal-types-protobuf/Cargo.toml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
[package]
22
name = "rustecal-types-protobuf"
33
version = "0.1.0"
4+
authors = ["Rex Schilasky"]
45
edition = "2021"
6+
description = "Google Protobuf type support for rustecal TypedPublisher / TypedSubscriber"
7+
license = "Apache-2.0"
8+
repository = "https://github.com/eclipse-ecal/rustecal"
9+
homepage = "https://github.com/eclipse-ecal/rustecal"
10+
documentation = "https://docs.rs/rustecal-pubsub"
11+
readme = "README.md"
12+
keywords = ["ecal", "ipc", "pubsub", "message-support", "middleware"]
13+
categories = ["network-programming", "api-bindings"]
514

615
[dependencies]
716
prost = "0.13.5"
8-
rustecal-core = { path = "../rustecal-core" }
9-
rustecal-pubsub = { path = "../rustecal-pubsub" }
17+
rustecal-core = { version = "0.1.0", path = "../rustecal-core" }
18+
rustecal-pubsub = { version = "0.1.0", path = "../rustecal-pubsub" }

rustecal-types-protobuf/README.md

Whitespace-only changes.

rustecal-types-string/Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
[package]
22
name = "rustecal-types-string"
33
version = "0.1.0"
4+
authors = ["Rex Schilasky"]
45
edition = "2021"
56
description = "String type support for rustecal TypedPublisher / TypedSubscriber"
67
license = "Apache-2.0"
8+
repository = "https://github.com/eclipse-ecal/rustecal"
9+
homepage = "https://github.com/eclipse-ecal/rustecal"
10+
documentation = "https://docs.rs/rustecal-pubsub"
11+
readme = "README.md"
12+
keywords = ["ecal", "ipc", "pubsub", "message-support", "middleware"]
13+
categories = ["network-programming", "api-bindings"]
714

815
[dependencies]
9-
rustecal-core = { path = "../rustecal-core" }
10-
rustecal-pubsub = { path = "../rustecal-pubsub" }
16+
rustecal-core = { version = "0.1.0", path = "../rustecal-core" }
17+
rustecal-pubsub = { version = "0.1.0", path = "../rustecal-pubsub" }

rustecal-types-string/README.md

Whitespace-only changes.

0 commit comments

Comments
 (0)