From 4273d926a685548efec58d438230b60938a99d1a Mon Sep 17 00:00:00 2001 From: Noah Metz Date: Sun, 21 Jan 2024 01:24:16 -0700 Subject: [PATCH] Added cert for convenience(it's public already) and and fleshed out on_match_list_update --- src/main.rs | 89 ++++++++++++++++++++++++++++++----------------------- tm.crt | 45 +++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 39 deletions(-) create mode 100644 tm.crt diff --git a/src/main.rs b/src/main.rs index a9b968a..a94a4f1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -160,14 +160,8 @@ struct Event { } impl Event { - fn new() -> Event { - Event{ - divisions: HashMap::new(), - } - } - - fn recreate_match_list(self: &mut Event, msg: BackendMessage) { - self.divisions = HashMap::new(); + fn from_match_list(msg: BackendMessage) -> Event { + let mut divisions: HashMap = HashMap::new(); match msg.data.match_list { Some(matches) => { for m in matches.matches.iter() { @@ -178,7 +172,7 @@ impl Event { match_num: m.r#match.unwrap(), session: m.session.unwrap(), }; - match self.divisions.get_mut(&match_tuple.division) { + match divisions.get_mut(&match_tuple.division) { Some(division) => { division.matches.push(Match{ match_tuple: match_tuple.clone(), @@ -193,13 +187,16 @@ impl Event { new_division.matches.push(Match{ match_tuple: match_tuple.clone(), }); - self.divisions.insert(match_tuple.division, new_division); + divisions.insert(match_tuple.division, new_division); }, } } }, None => log::warn!("Parsed match list without match_list"), - } + }; + return Event{ + divisions, + }; } } @@ -578,15 +575,15 @@ impl TMClient { } } -type NoticeCallback = fn(tm::Notice, Event) -> (Vec, Event); +type NoticeCallback = fn(tm::Notice, Event, &TMConnection) -> (Vec, Event); fn get_game_score(scores: tm::MatchScore) -> Option { if scores.alliances.len() != 2 { return None; } - let ref red_score = scores.alliances[0]; - let ref blue_score = scores.alliances[1]; + let ref _red_score = scores.alliances[0]; + let ref _blue_score = scores.alliances[1]; // 1) Get the autonomous winner // 2) Get score object and fill AllianceScore struct @@ -615,7 +612,7 @@ fn get_game_score(scores: tm::MatchScore) -> Option { return Some(out); } -fn on_score_change(notice: tm::Notice, event: Event) -> (Vec, Event) { +fn on_score_change(notice: tm::Notice, event: Event, _connection: &TMConnection) -> (Vec, Event) { match notice.match_score { None => return (Vec::new(), event), Some(game_scores) => { @@ -636,44 +633,60 @@ fn on_score_change(notice: tm::Notice, event: Event) -> (Vec, Event } } -fn on_match_start(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_match_start(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_match_cancel(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_match_cancel(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_match_reset(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_match_reset(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_match_assigned(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_match_assigned(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_active_field_changed(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_active_field_changed(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_rankings_updated(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_rankings_updated(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_event_status_updated(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_event_status_updated(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_elim_alliance_update(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_elim_alliance_update(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_elim_unavail_teams_update(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_elim_unavail_teams_update(_notice: tm::Notice, _event: Event, _connection: &TMConnection) -> (Vec, Event) { + return (Vec::new(), _event); } -fn on_match_list_update(notice: tm::Notice, event: Event) -> (Vec, Event) { - return (Vec::new(), event); +fn on_match_list_update(_notice: tm::Notice, _event: Event, connection: &TMConnection) -> (Vec, Event) { + let mut get_match_list_tuple = tm::MatchTuple::default(); + get_match_list_tuple.division = Some(0); + get_match_list_tuple.round = None; + get_match_list_tuple.instance = Some(0); + get_match_list_tuple.r#match = Some(0); + get_match_list_tuple.session = Some(0); + + let mut get_match_list_data = tm::BackendMessageData::default(); + get_match_list_data.match_tuple = Some(get_match_list_tuple); + + let get_match_list_req = BackendMessage::new(1002, get_match_list_data.clone()); + connection.requests.send(Box::new(get_match_list_req)).unwrap(); + + let get_match_list_resp = connection.responses.recv().unwrap(); + + let new_event = Event::from_match_list(*get_match_list_resp); + return (Vec::new(), new_event); } fn main() { @@ -738,9 +751,7 @@ fn main() { let get_match_list_resp = tm_connection.responses.recv().unwrap(); - let mut event = Event::new(); - event.recreate_match_list(*get_match_list_resp); - println!("Event after parse: {:?}", event); + let mut event = Event::from_match_list(*get_match_list_resp); while running { thread::sleep(Duration::from_millis(1000)); @@ -755,7 +766,7 @@ fn main() { } }, Some(callback) => { - let (messages, next_event) = callback(*notice, event); + let (messages, next_event) = callback(*notice, event, &tm_connection); event = next_event; for message in messages { let result = client.publish(message.topic, QoS::AtMostOnce, true, message.payload); diff --git a/tm.crt b/tm.crt new file mode 100644 index 0000000..b8ed63d --- /dev/null +++ b/tm.crt @@ -0,0 +1,45 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAygkWe2HEe8/nk0YeY4GqGIKXnzSXnAvl0T8drwQ0zj7lR4cw +FXct4WySbwjmnha+xRC46xfLnzWpQFALnORzRsKMceGmvusTkPVD77i0XOoVs7Ao +mhlM3gsENtI/kcQpNXqsfFkF0mocN3D2kzM6Ifw6JBoMAumCTs7INYaR/WjlJxlS +LHirs7a9AkFs0OppIl5QKlMTcuhHWDkfB6Qg3LJ+xLcdcPauJ0WNwaDDNwE269V2 +KqKhPS+jQbr9mCpB2JeGpBvJ8ibr1yRycnm2dedrhY1X1t0ABhNNxJVogFbHky82 +eCq52RkwnkP/C9CpMkK/Ioe3pScVLf2mpaxhCwIDAQABAoIBACSKQjuscgnmjz6O +pv5ePDJUpDGSJH1/lWAj5y15OEe5DmTCaYroVC76IP3eAT/EY1pm7NrwIc64uNS9 +5WvJ0aORmi8anbrX72D/Svs3T7+iQqyOBrngK4vZODjmC8NEVCOs/Tc8LpZgxJuu +XZo/4Jq28JkI8PUx4HR6Z7FulkbbeGW4KWvZxpb8WAHbW6W2Wi2w37hS1+++s2S4 +EmDLir3R8VnbRSLluR+I490XYC2HYEmw0oqoxPCpP5fNi5nbb/6SnqDIGyy5kLOX +g2yd+syXMq0OZkQLUB7r1TcQJ+8vcQReUe5sl6H5mGrKyRy52N7bdYYdHYQDkLV3 +yYffq5kCgYEA9CZuydppdtaE6JblhFEIlDikuO79COHz1rozx7SLLHctOGRf4SUx +ygNrRcFDIAG0VbohlbzRYMkDHborb1GEIDhRoagQ7Wsd6LR/FGqHzSHev1+1QTT+ +7hJF1HTbDdy+6CKY6iiCbTfmgvA/nHBxU8NT892wQMpMfurT/s+/ea8CgYEA09dh +ZiF7QFZyXU11qeK8XJcRkl40XVETeR4mtTEltRtcNq3SFadY5rRitOYC2w/9H1+C +aZY98OvHcBpx9Tl5MHavDOOI180avCO+KU7HAk4CFE8dto4i1ZTF2MxL8hOBaBgH +RTB69s8WrdgbaR5SRpSSIXmzFG4xaqJE6YWvUWUCgYBpxGiES3kawU3skMo3Kv+j +bnJ1pxq5CWGf6SRbZGxSRAK0Bk++8mUCVb7YBiQ1LmfYJ307KAQwgIQ4EZmVbOPn +LV63wF4s7BWV5POUfZ39EKo1j5mu+O1jZ0kXA9SNyc5uM+a4sfnmpKvYl4mHFPMT +TXAGGkirmLfQ15wlLAyQAwKBgQDCehcjkJc64GHLgCIGHW45PkLWcX93L8hFx8VX +UFBCrGSCmh6k3GYEHhQD6Kk0fMAu/hqWXmRs+be1FcIKk4HLWRmpJnXpT5U8pT+d +YoHWftDv3hX0Exatpw/e0ObjzL5fVrfN8Azi6gjy/dNkNH7p5tkkvDoIBoV9VI0Z +KS5i9QKBgCsEpJb0J4PLXjyHSaoAJ9C25KFHIvDD38MFAkJ5/3xWuTbx9PuCGJnG +1NISqcfDEodoX7hd63wy1XktT2qpYB6Qeh5zTN1dTGiGkEEZ39/l+hZnib1b9+Dx +3EmKEr2gSxwJAHyhIYhutPtEoOLh5y55JexVMnsJIdWLZEEZoCr2 +-----END RSA PRIVATE KEY----- +-----BEGIN CERTIFICATE----- +MIIC+DCCAeACAQEwDQYJKoZIhvcNAQELBQAwQDEdMBsGA1UECgwURFdBQiBUZWNo +bm9sb2d5LCBMTEMxHzAdBgNVBAMMFnZleC10b3VybmFtZW50LW1hbmFnZXIwIhgP +MTk3MDAxMDEwMDAwMDBaGA8yMDM3MTIzMTIzNTk1OVowQDEdMBsGA1UECgwURFdB +QiBUZWNobm9sb2d5LCBMTEMxHzAdBgNVBAMMFnZleC10b3VybmFtZW50LW1hbmFn +ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKCRZ7YcR7z+eTRh5j +gaoYgpefNJecC+XRPx2vBDTOPuVHhzAVdy3hbJJvCOaeFr7FELjrF8ufNalAUAuc +5HNGwoxx4aa+6xOQ9UPvuLRc6hWzsCiaGUzeCwQ20j+RxCk1eqx8WQXSahw3cPaT +Mzoh/DokGgwC6YJOzsg1hpH9aOUnGVIseKuztr0CQWzQ6mkiXlAqUxNy6EdYOR8H +pCDcsn7Etx1w9q4nRY3BoMM3ATbr1XYqoqE9L6NBuv2YKkHYl4akG8nyJuvXJHJy +ebZ152uFjVfW3QAGE03ElWiAVseTLzZ4KrnZGTCeQ/8L0KkyQr8ih7elJxUt/aal +rGELAgMBAAEwDQYJKoZIhvcNAQELBQADggEBALgtYYqrPaL75RxuMxxPHMkm8E4p +ifw5DuWbFK3x94STT2D93w65viqynT0YQa3wCfLADa8O1vwSApjH22qwiqQOqB6m +gPTZ1nQ/JkRywSrHeJ9pXZeJQ3k9upId6Vx9xgyokDXID2eieCLkJrdP0CYg6DuV +vYzKTiadrfUPbu74IWmoUdT15gUGtFSg4luFsxZKJ5OPcmqeV9FGLpKveCr0rifQ +y+ZL7agP4VcMkWdHja9/8YCplDeI8YxO43ieCzWtnM02UV8EI6FgtnKsZz4IhHmK +cNbECw5kw3djSdwdZUwu1ahAekGUoYYD3VL5b3WSSHaYfI6/hPI1boW9ifk= +-----END CERTIFICATE-----