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 88)
73fn demo_playback() {
74 let options = PlaybackOptions {
75 file_path: "./demo.json".into(),
76 override_topic: None,
77 loop_count: 1, // ignored anyway, in this case
78 loop_infinite: true,
79 ignore_ctrl_c: true, // this is important for programmatic use
80 playback_speed: 1.0,
81 topic_filters: None,
82 };
83
84 let tether_agent = TetherAgentOptionsBuilder::new("demoTopics")
85 .build()
86 .expect("failed to init/connect Tether Agent");
87
88 let player = TetherPlaybackUtil::new(options);
89 let stop_request_tx = player.get_stop_tx();
90
91 let start_time = SystemTime::now();
92
93 let handles = vec![
94 spawn(move || {
95 player.start(&tether_agent);
96 }),
97 spawn(move || {
98 let mut time_to_end = false;
99 while !time_to_end {
100 if let Ok(elapsed) = start_time.elapsed() {
101 if elapsed > std::time::Duration::from_secs(3) {
102 println!("Time to stop! {}s elapsed", elapsed.as_secs());
103 stop_request_tx
104 .send(true)
105 .expect("failed to send stop request via channel");
106 time_to_end = true;
107 }
108 }
109 }
110 println!("Playback should have stopped now; wait 1 more seconds...");
111 std::thread::sleep(std::time::Duration::from_secs(1));
112
113 println!("...Bye");
114 }),
115 ];
116 for handle in handles {
117 handle.join().expect("failed to join handle");
118 }
119}Sourcepub fn get_stop_tx(&self) -> Sender<bool>
pub fn get_stop_tx(&self) -> Sender<bool>
Examples found in repository?
examples/api.rs (line 89)
73fn demo_playback() {
74 let options = PlaybackOptions {
75 file_path: "./demo.json".into(),
76 override_topic: None,
77 loop_count: 1, // ignored anyway, in this case
78 loop_infinite: true,
79 ignore_ctrl_c: true, // this is important for programmatic use
80 playback_speed: 1.0,
81 topic_filters: None,
82 };
83
84 let tether_agent = TetherAgentOptionsBuilder::new("demoTopics")
85 .build()
86 .expect("failed to init/connect Tether Agent");
87
88 let player = TetherPlaybackUtil::new(options);
89 let stop_request_tx = player.get_stop_tx();
90
91 let start_time = SystemTime::now();
92
93 let handles = vec![
94 spawn(move || {
95 player.start(&tether_agent);
96 }),
97 spawn(move || {
98 let mut time_to_end = false;
99 while !time_to_end {
100 if let Ok(elapsed) = start_time.elapsed() {
101 if elapsed > std::time::Duration::from_secs(3) {
102 println!("Time to stop! {}s elapsed", elapsed.as_secs());
103 stop_request_tx
104 .send(true)
105 .expect("failed to send stop request via channel");
106 time_to_end = true;
107 }
108 }
109 }
110 println!("Playback should have stopped now; wait 1 more seconds...");
111 std::thread::sleep(std::time::Duration::from_secs(1));
112
113 println!("...Bye");
114 }),
115 ];
116 for handle in handles {
117 handle.join().expect("failed to join handle");
118 }
119}Sourcepub fn start(&self, tether_agent: &TetherAgent)
pub fn start(&self, tether_agent: &TetherAgent)
Examples found in repository?
examples/api.rs (line 95)
73fn demo_playback() {
74 let options = PlaybackOptions {
75 file_path: "./demo.json".into(),
76 override_topic: None,
77 loop_count: 1, // ignored anyway, in this case
78 loop_infinite: true,
79 ignore_ctrl_c: true, // this is important for programmatic use
80 playback_speed: 1.0,
81 topic_filters: None,
82 };
83
84 let tether_agent = TetherAgentOptionsBuilder::new("demoTopics")
85 .build()
86 .expect("failed to init/connect Tether Agent");
87
88 let player = TetherPlaybackUtil::new(options);
89 let stop_request_tx = player.get_stop_tx();
90
91 let start_time = SystemTime::now();
92
93 let handles = vec![
94 spawn(move || {
95 player.start(&tether_agent);
96 }),
97 spawn(move || {
98 let mut time_to_end = false;
99 while !time_to_end {
100 if let Ok(elapsed) = start_time.elapsed() {
101 if elapsed > std::time::Duration::from_secs(3) {
102 println!("Time to stop! {}s elapsed", elapsed.as_secs());
103 stop_request_tx
104 .send(true)
105 .expect("failed to send stop request via channel");
106 time_to_end = true;
107 }
108 }
109 }
110 println!("Playback should have stopped now; wait 1 more seconds...");
111 std::thread::sleep(std::time::Duration::from_secs(1));
112
113 println!("...Bye");
114 }),
115 ];
116 for handle in handles {
117 handle.join().expect("failed to join handle");
118 }
119}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