pub struct TetherPlaybackUtil { /* private fields */ }Implementations§
Source§impl TetherPlaybackUtil
impl TetherPlaybackUtil
Sourcepub fn new(options: PlaybackOptions) -> Self
pub fn new(options: PlaybackOptions) -> Self
Examples found in repository?
examples/api.rs (line 92)
77fn demo_playback() {
78 let options = PlaybackOptions {
79 file_path: "./demo.json".into(),
80 override_topic: None,
81 loop_count: 1, // ignored anyway, in this case
82 loop_infinite: true,
83 ignore_ctrl_c: true, // this is important for programmatic use
84 playback_speed: 1.0,
85 topic_filters: None,
86 };
87
88 let tether_agent = TetherAgentBuilder::new("demoTopics")
89 .build()
90 .expect("failed to init/connect Tether Agent");
91
92 let player = TetherPlaybackUtil::new(options);
93 let stop_request_tx = player.get_stop_tx();
94
95 let start_time = SystemTime::now();
96
97 let handles = vec![
98 spawn(move || {
99 player.start(&tether_agent);
100 }),
101 spawn(move || {
102 let mut time_to_end = false;
103 while !time_to_end {
104 if let Ok(elapsed) = start_time.elapsed() {
105 if elapsed > std::time::Duration::from_secs(3) {
106 println!("Time to stop! {}s elapsed", elapsed.as_secs());
107 stop_request_tx
108 .send(true)
109 .expect("failed to send stop request via channel");
110 time_to_end = true;
111 }
112 }
113 }
114 println!("Playback should have stopped now; wait 1 more seconds...");
115 std::thread::sleep(std::time::Duration::from_secs(1));
116
117 println!("...Bye");
118 }),
119 ];
120 for handle in handles {
121 handle.join().expect("failed to join handle");
122 }
123}Sourcepub fn get_stop_tx(&self) -> Sender<bool>
pub fn get_stop_tx(&self) -> Sender<bool>
Examples found in repository?
examples/api.rs (line 93)
77fn demo_playback() {
78 let options = PlaybackOptions {
79 file_path: "./demo.json".into(),
80 override_topic: None,
81 loop_count: 1, // ignored anyway, in this case
82 loop_infinite: true,
83 ignore_ctrl_c: true, // this is important for programmatic use
84 playback_speed: 1.0,
85 topic_filters: None,
86 };
87
88 let tether_agent = TetherAgentBuilder::new("demoTopics")
89 .build()
90 .expect("failed to init/connect Tether Agent");
91
92 let player = TetherPlaybackUtil::new(options);
93 let stop_request_tx = player.get_stop_tx();
94
95 let start_time = SystemTime::now();
96
97 let handles = vec![
98 spawn(move || {
99 player.start(&tether_agent);
100 }),
101 spawn(move || {
102 let mut time_to_end = false;
103 while !time_to_end {
104 if let Ok(elapsed) = start_time.elapsed() {
105 if elapsed > std::time::Duration::from_secs(3) {
106 println!("Time to stop! {}s elapsed", elapsed.as_secs());
107 stop_request_tx
108 .send(true)
109 .expect("failed to send stop request via channel");
110 time_to_end = true;
111 }
112 }
113 }
114 println!("Playback should have stopped now; wait 1 more seconds...");
115 std::thread::sleep(std::time::Duration::from_secs(1));
116
117 println!("...Bye");
118 }),
119 ];
120 for handle in handles {
121 handle.join().expect("failed to join handle");
122 }
123}Sourcepub fn start(&self, tether_agent: &TetherAgent)
pub fn start(&self, tether_agent: &TetherAgent)
Examples found in repository?
examples/api.rs (line 99)
77fn demo_playback() {
78 let options = PlaybackOptions {
79 file_path: "./demo.json".into(),
80 override_topic: None,
81 loop_count: 1, // ignored anyway, in this case
82 loop_infinite: true,
83 ignore_ctrl_c: true, // this is important for programmatic use
84 playback_speed: 1.0,
85 topic_filters: None,
86 };
87
88 let tether_agent = TetherAgentBuilder::new("demoTopics")
89 .build()
90 .expect("failed to init/connect Tether Agent");
91
92 let player = TetherPlaybackUtil::new(options);
93 let stop_request_tx = player.get_stop_tx();
94
95 let start_time = SystemTime::now();
96
97 let handles = vec![
98 spawn(move || {
99 player.start(&tether_agent);
100 }),
101 spawn(move || {
102 let mut time_to_end = false;
103 while !time_to_end {
104 if let Ok(elapsed) = start_time.elapsed() {
105 if elapsed > std::time::Duration::from_secs(3) {
106 println!("Time to stop! {}s elapsed", elapsed.as_secs());
107 stop_request_tx
108 .send(true)
109 .expect("failed to send stop request via channel");
110 time_to_end = true;
111 }
112 }
113 }
114 println!("Playback should have stopped now; wait 1 more seconds...");
115 std::thread::sleep(std::time::Duration::from_secs(1));
116
117 println!("...Bye");
118 }),
119 ];
120 for handle in handles {
121 handle.join().expect("failed to join handle");
122 }
123}Auto Trait Implementations§
impl Freeze for TetherPlaybackUtil
impl RefUnwindSafe for TetherPlaybackUtil
impl Send for TetherPlaybackUtil
impl !Sync for TetherPlaybackUtil
impl Unpin for TetherPlaybackUtil
impl UnwindSafe for TetherPlaybackUtil
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more