fix: use same connection for all connect attempts

This commit is contained in:
Ryan Brue 2024-04-18 21:27:25 -05:00 • committed by Michael Murphy
parent 1760354654
commit c7765278f0

View file

@ -109,7 +109,7 @@ pub fn power_profile_subscription<I: 'static + Hash + Copy + Send + Sync + Debug
#[derive(Debug)] #[derive(Debug)]
pub enum State { pub enum State {
Ready, Ready,
Connecting(BackendType), Connecting(BackendType, Connection),
Waiting( Waiting(
Connection, Connection,
UnboundedReceiver<PowerProfileRequest>, UnboundedReceiver<PowerProfileRequest>,
@ -125,9 +125,6 @@ async fn start_listening(
match state { match state {
State::Ready => { State::Ready => {
// Default to s76 powerdaemon // Default to s76 powerdaemon
State::Connecting(BackendType::default())
}
State::Connecting(backend_type) => {
let conn = match Connection::system().await.map_err(|e| e.to_string()) { let conn = match Connection::system().await.map_err(|e| e.to_string()) {
Ok(conn) => conn, Ok(conn) => conn,
Err(e) => { Err(e) => {
@ -135,6 +132,9 @@ async fn start_listening(
return State::Finished; return State::Finished;
} }
}; };
State::Connecting(BackendType::default(), conn)
}
State::Connecting(backend_type, conn) => {
let backend = match get_power_backend(&conn, &backend_type) let backend = match get_power_backend(&conn, &backend_type)
.await .await
.map_err(|e| e.to_string()) .map_err(|e| e.to_string())
@ -143,7 +143,7 @@ async fn start_listening(
Err(e) => { Err(e) => {
_ = output.send(PowerProfileUpdate::Error(e)).await; _ = output.send(PowerProfileUpdate::Error(e)).await;
if let Some(next_type) = backend_type.next() { if let Some(next_type) = backend_type.next() {
return State::Connecting(next_type); return State::Connecting(next_type, conn);
} else { } else {
return State::Finished; return State::Finished;
}; };
@ -155,7 +155,7 @@ async fn start_listening(
Err(e) => { Err(e) => {
_ = output.send(PowerProfileUpdate::Error(e)).await; _ = output.send(PowerProfileUpdate::Error(e)).await;
if let Some(next_type) = backend_type.next() { if let Some(next_type) = backend_type.next() {
return State::Connecting(next_type); return State::Connecting(next_type, conn);
} else { } else {
return State::Finished; return State::Finished;
}; };
@ -173,7 +173,7 @@ async fn start_listening(
Ok(b) => b, Ok(b) => b,
Err(e) => { Err(e) => {
_ = output.send(PowerProfileUpdate::Error(e)).await; _ = output.send(PowerProfileUpdate::Error(e)).await;
return State::Connecting(backend_type); return State::Connecting(backend_type, conn);
} }
}; };