pub struct TelemetryServer<T: TelemetryEvent> { /* private fields */ }Expand description
TelemetryServer implements a generic server that can bind and recv packets exposes the next_event method that returns an unpacked “TelemetryEvent”
Implementations§
Source§impl<T: TelemetryEvent> TelemetryServer<T>
impl<T: TelemetryEvent> TelemetryServer<T>
Sourcepub fn new(address: &'static str) -> Result<TelemetryServer<T>, Error>
pub fn new(address: &'static str) -> Result<TelemetryServer<T>, Error>
new initializes a Server with the given address
Examples found in repository?
examples/dirt.rs (line 6)
4fn main() {
5 let server =
6 TelemetryServer::<DirtRally2>::new("127.0.0.1:20777").expect("failed to bind to address");
7 println!("listening on 127.0.0.1:20777...");
8
9 loop {
10 match server.next() {
11 Ok(event) => println!(
12 "Got event packet :-), {} m/s in {:?} gear!",
13 event.car.speed, event.car.gear
14 ),
15 Err(e) => println!("Got an error :-(, {:?}", e),
16 }
17 }
18}More examples
examples/f1_2022.rs (line 6)
4fn main() {
5 let server =
6 TelemetryServer::<F1_2022>::new("127.0.0.1:20777").expect("failed to bind to address");
7 println!("listening on 127.0.0.1:20777...");
8
9 loop {
10 let event = server.next();
11
12 if let Err(e) = event {
13 println!("error: {:?}", e);
14 continue;
15 }
16
17 match event.unwrap() {
18 F1_2022::Motion(_data) => println!("Received Motion packet"),
19 F1_2022::Session(_data) => println!("Received Session packet"),
20 F1_2022::LapData(_data) => println!("Received Lap packet"),
21 F1_2022::Event(_data) => println!("Received Event packet"),
22 F1_2022::Participants(_data) => println!("Received Participants packet"),
23 F1_2022::CarSetup(_data) => println!("Received CarSetup packet"),
24 F1_2022::CarTelemetry(_data) => println!("Received CarTelemetry packet"),
25 F1_2022::CarStatus(_data) => println!("Received CarStatus packet"),
26 F1_2022::FinalClassification(_data) => println!("Received FinalClassification packet"),
27 F1_2022::LobbyInfo(_data) => println!("Received LobbyInfo packet"),
28 F1_2022::CarDamage(_data) => println!("Received CarDamage packet"),
29 F1_2022::SessionHistory(_data) => println!("Received SessionHistory packet"),
30 }
31 }
32}examples/f1_2020.rs (line 6)
4fn main() {
5 let server =
6 TelemetryServer::<F1_2020>::new("127.0.0.1:20777").expect("failed to bind to address");
7 println!("listening on 127.0.0.1:20777...");
8
9 loop {
10 let event = server.next();
11
12 if let Err(e) = event {
13 println!("error: {:?}", e);
14 continue;
15 }
16
17 match event.unwrap() {
18 F1_2020::Motion(data) => println!(
19 "Motion packet received: {:?}",
20 data.player_data().world_position
21 ),
22 F1_2020::Session(data) => println!(
23 "Session packet received: {:?}, {:?}, {:?}, {:?}",
24 data.formula, data.session_type, data.track, data.weather
25 ),
26 F1_2020::LapData(data) => println!(
27 "LapData packet received: {:?}, {:?}, {:?}",
28 data.player_data().current_lap_time,
29 data.player_data().pit_status,
30 data.player_data().driver_status,
31 ),
32 F1_2020::Event(data) => {
33 println!("Event packet received: {:?}", data.event_data_details)
34 }
35 F1_2020::Participants(data) => println!(
36 "Participants packet received: {:?}",
37 data.player_data().name
38 ),
39 F1_2020::CarSetup(data) => println!(
40 "CarSetups packet received: {:?}",
41 data.player_data().fuel_load
42 ),
43 F1_2020::CarTelemetry(data) => println!(
44 "CarTelemtry packet received: {:?}, {:?}",
45 data.mfd_panel,
46 data.player_data()
47 ),
48 F1_2020::CarStatus(data) => println!(
49 "CarStatus packet received: {:?}",
50 data.player_data().drs_activation_distance
51 ),
52 F1_2020::FinalClassification(data) => println!(
53 "FinalClassification packet received: {:?}",
54 data.player_data()
55 ),
56 F1_2020::LobbyInfo(data) => {
57 println!("LobbyInfo packet received: {:?}", data.players(),)
58 }
59 }
60 }
61}Sourcepub fn next(&self) -> Result<T, Box<dyn Error>>
pub fn next(&self) -> Result<T, Box<dyn Error>>
next will call recv on the inner UDP server (this blocks) and will call from_packet from the given T
Examples found in repository?
examples/dirt.rs (line 10)
4fn main() {
5 let server =
6 TelemetryServer::<DirtRally2>::new("127.0.0.1:20777").expect("failed to bind to address");
7 println!("listening on 127.0.0.1:20777...");
8
9 loop {
10 match server.next() {
11 Ok(event) => println!(
12 "Got event packet :-), {} m/s in {:?} gear!",
13 event.car.speed, event.car.gear
14 ),
15 Err(e) => println!("Got an error :-(, {:?}", e),
16 }
17 }
18}More examples
examples/f1_2022.rs (line 10)
4fn main() {
5 let server =
6 TelemetryServer::<F1_2022>::new("127.0.0.1:20777").expect("failed to bind to address");
7 println!("listening on 127.0.0.1:20777...");
8
9 loop {
10 let event = server.next();
11
12 if let Err(e) = event {
13 println!("error: {:?}", e);
14 continue;
15 }
16
17 match event.unwrap() {
18 F1_2022::Motion(_data) => println!("Received Motion packet"),
19 F1_2022::Session(_data) => println!("Received Session packet"),
20 F1_2022::LapData(_data) => println!("Received Lap packet"),
21 F1_2022::Event(_data) => println!("Received Event packet"),
22 F1_2022::Participants(_data) => println!("Received Participants packet"),
23 F1_2022::CarSetup(_data) => println!("Received CarSetup packet"),
24 F1_2022::CarTelemetry(_data) => println!("Received CarTelemetry packet"),
25 F1_2022::CarStatus(_data) => println!("Received CarStatus packet"),
26 F1_2022::FinalClassification(_data) => println!("Received FinalClassification packet"),
27 F1_2022::LobbyInfo(_data) => println!("Received LobbyInfo packet"),
28 F1_2022::CarDamage(_data) => println!("Received CarDamage packet"),
29 F1_2022::SessionHistory(_data) => println!("Received SessionHistory packet"),
30 }
31 }
32}examples/f1_2020.rs (line 10)
4fn main() {
5 let server =
6 TelemetryServer::<F1_2020>::new("127.0.0.1:20777").expect("failed to bind to address");
7 println!("listening on 127.0.0.1:20777...");
8
9 loop {
10 let event = server.next();
11
12 if let Err(e) = event {
13 println!("error: {:?}", e);
14 continue;
15 }
16
17 match event.unwrap() {
18 F1_2020::Motion(data) => println!(
19 "Motion packet received: {:?}",
20 data.player_data().world_position
21 ),
22 F1_2020::Session(data) => println!(
23 "Session packet received: {:?}, {:?}, {:?}, {:?}",
24 data.formula, data.session_type, data.track, data.weather
25 ),
26 F1_2020::LapData(data) => println!(
27 "LapData packet received: {:?}, {:?}, {:?}",
28 data.player_data().current_lap_time,
29 data.player_data().pit_status,
30 data.player_data().driver_status,
31 ),
32 F1_2020::Event(data) => {
33 println!("Event packet received: {:?}", data.event_data_details)
34 }
35 F1_2020::Participants(data) => println!(
36 "Participants packet received: {:?}",
37 data.player_data().name
38 ),
39 F1_2020::CarSetup(data) => println!(
40 "CarSetups packet received: {:?}",
41 data.player_data().fuel_load
42 ),
43 F1_2020::CarTelemetry(data) => println!(
44 "CarTelemtry packet received: {:?}, {:?}",
45 data.mfd_panel,
46 data.player_data()
47 ),
48 F1_2020::CarStatus(data) => println!(
49 "CarStatus packet received: {:?}",
50 data.player_data().drs_activation_distance
51 ),
52 F1_2020::FinalClassification(data) => println!(
53 "FinalClassification packet received: {:?}",
54 data.player_data()
55 ),
56 F1_2020::LobbyInfo(data) => {
57 println!("LobbyInfo packet received: {:?}", data.players(),)
58 }
59 }
60 }
61}Auto Trait Implementations§
impl<T> Freeze for TelemetryServer<T>
impl<T> RefUnwindSafe for TelemetryServer<T>where
T: RefUnwindSafe,
impl<T> Send for TelemetryServer<T>where
T: Send,
impl<T> Sync for TelemetryServer<T>where
T: Sync,
impl<T> Unpin for TelemetryServer<T>where
T: Unpin,
impl<T> UnwindSafe for TelemetryServer<T>where
T: UnwindSafe,
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