@@ -19,17 +19,24 @@ Rust bindings for the high-performance [eCAL](https://github.com/eclipse-ecal/ec
1919### Publisher
2020
2121``` rust
22- use rustecal :: {Ecal , EcalComponents };
23- use rustecal :: pubsub :: Publisher ;
22+ use rustecal :: {Ecal , EcalComponents , TypedPublisher };
23+ use rustecal_types_string :: StringMessage ;
24+
25+ fn main () {
26+ Ecal :: initialize (Some (" hello publisher" ), EcalComponents :: DEFAULT )
27+ . expect (" eCAL initialization failed" );
28+
29+ let publisher : TypedPublisher <StringMessage > = TypedPublisher :: <StringMessage >:: new (" chatter" )
30+ . expect (" Failed to create publisher" );
2431
25- fn main () -> Result <(), Box < dyn std :: error :: Error >> {
26- Ecal :: initialize ( Some ( " rust publisher " ), EcalComponents :: DEFAULT ) ? ;
27- let mut pub = Publisher :: < String > :: new ( " chatter " ) ? ;
32+ while Ecal :: ok () {
33+ let wrapped = StringMessage ( " Hello from Rust! " . to_string ()) ;
34+ publisher . send ( & wrapped ) ;
2835
29- loop {
30- pub . send (" Hello from Rust!" )? ;
3136 std :: thread :: sleep (std :: time :: Duration :: from_millis (500 ));
3237 }
38+
39+ Ecal :: finalize ();
3340}
3441```
3542
@@ -38,20 +45,26 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
3845### Subscriber
3946
4047``` rust
41- use rustecal :: {Ecal , EcalComponents };
42- use rustecal :: pubsub :: Subscriber ;
48+ use rustecal :: {Ecal , EcalComponents , TypedSubscriber };
49+ use rustecal_types_string :: StringMessage ;
50+ use rustecal :: pubsub :: typed_subscriber :: Received ;
51+
52+ fn main () {
53+ Ecal :: initialize (Some (" hello subscriber" ), EcalComponents :: DEFAULT )
54+ . expect (" eCAL initialization failed" );
4355
44- fn main () -> Result <(), Box <dyn std :: error :: Error >> {
45- Ecal :: initialize (Some (" rust subscriber" ), EcalComponents :: DEFAULT )? ;
46- let sub = Subscriber :: <String >:: new (" chatter" )? ;
56+ let mut subscriber = TypedSubscriber :: <StringMessage >:: new (" chatter" )
57+ . expect (" Failed to create subscriber" );
4758
48- sub . set_callback (| msg | {
49- println! (" Received: {}" , msg . payload );
50- })? ;
59+ subscriber . set_callback (| msg : Received < StringMessage > | {
60+ println! (" Received : {}" , msg . msg . 0 );
61+ });
5162
52- loop {
63+ while Ecal :: ok () {
5364 std :: thread :: sleep (std :: time :: Duration :: from_millis (100 ));
5465 }
66+
67+ Ecal :: finalize ();
5568}
5669```
5770
@@ -64,19 +77,24 @@ use rustecal::{Ecal, EcalComponents};
6477use rustecal :: service :: server :: ServiceServer ;
6578use rustecal :: service :: types :: MethodInfo ;
6679
67- fn main () -> Result <(), Box <dyn std :: error :: Error >> {
68- Ecal :: initialize (Some (" mirror server" ), EcalComponents :: DEFAULT )? ;
69- let mut server = ServiceServer :: new (" mirror" )? ;
80+ fn main () {
81+ Ecal :: initialize (Some (" mirror server" ), EcalComponents :: DEFAULT )
82+ . expect (" eCAL initialization failed" );
83+
84+ let mut server = ServiceServer :: new (" mirror" )
85+ . expect (" Failed to create server" );
7086
7187 server . add_method (" reverse" , Box :: new (| _info : MethodInfo , req : & [u8 ]| {
7288 let mut reversed = req . to_vec ();
7389 reversed . reverse ();
7490 reversed
75- }))? ;
91+ })). unwrap () ;
7692
77- loop {
93+ while Ecal :: ok () {
7894 std :: thread :: sleep (std :: time :: Duration :: from_millis (100 ));
7995 }
96+
97+ Ecal :: finalize ();
8098}
8199```
82100
@@ -89,21 +107,27 @@ use rustecal::{Ecal, EcalComponents};
89107use rustecal :: service :: client :: ServiceClient ;
90108use rustecal :: service :: types :: ServiceRequest ;
91109
92- fn main () -> Result <(), Box < dyn std :: error :: Error >> {
93- Ecal :: initialize (Some (" mirror client" ), EcalComponents :: DEFAULT )? ;
94- let client = ServiceClient :: new ( " mirror " ) ? ;
110+ fn main () {
111+ Ecal :: initialize (Some (" mirror client" ), EcalComponents :: DEFAULT )
112+ . expect ( " eCAL initialization failed " ) ;
95113
96- let request = ServiceRequest {
97- payload : b " stressed" . to_vec (),
98- };
114+ let client = ServiceClient :: new (" mirror" );
115+ . expect (" Failed to create client" );
99116
100- if let Some (response ) = client . call (" reverse" , request , Some (1000 )) {
101- println! (" Reversed: {}" , String :: from_utf8_lossy (& response . payload));
102- } else {
103- println! (" No response received." );
104- }
117+ while Ecal :: ok () {
118+ let request = ServiceRequest {
119+ payload : b " stressed" . to_vec (),
120+ };
121+
122+ if let Some (response ) = client . call (" reverse" , request , Some (1000 )) {
123+ println! (" Reversed: {}" , String :: from_utf8_lossy (& response . payload));
124+ } else {
125+ println! (" No response received." );
126+ }
105127
106- Ok (())
128+ std :: thread :: sleep (std :: time :: Duration :: from_secs (1 ));
129+ }
130+ Ecal :: finalize ();
107131}
108132```
109133
0 commit comments