diff --git a/squire_core/src/state/accounts.rs b/squire_core/src/state/accounts.rs index e8e32706..f8fa38e2 100644 --- a/squire_core/src/state/accounts.rs +++ b/squire_core/src/state/accounts.rs @@ -18,7 +18,7 @@ use squire_sdk::{ }; use tokio::sync::oneshot::Sender as OneshotSender; use tracing::Level; -use troupe::prelude::*; +use troupe::{prelude::*, sink::permanent::Tracker}; pub struct LoginError; diff --git a/squire_core/src/state/session.rs b/squire_core/src/state/session.rs index 3c5790cb..51836ca2 100644 --- a/squire_core/src/state/session.rs +++ b/squire_core/src/state/session.rs @@ -65,7 +65,7 @@ use tokio::sync::{ watch::{channel, Receiver as Watcher, Sender as Broadcaster}, }; use tracing::Level; -use troupe::prelude::*; +use troupe::{prelude::*, sink::permanent::Tracker}; #[derive(From)] pub enum SessionCommand { diff --git a/squire_core/src/tests/utils.rs b/squire_core/src/tests/utils.rs index 3b051489..d46c928e 100644 --- a/squire_core/src/tests/utils.rs +++ b/squire_core/src/tests/utils.rs @@ -5,7 +5,6 @@ use http::{ header::{CONTENT_TYPE, SET_COOKIE}, Method, }; -use hyper::Body; use serde::{de::DeserializeOwned, Serialize}; use squire_sdk::api::Url; use tower::{Service, ServiceExt}; diff --git a/squire_sdk/Cargo.toml b/squire_sdk/Cargo.toml index 5dc9a4fc..d94881af 100644 --- a/squire_sdk/Cargo.toml +++ b/squire_sdk/Cargo.toml @@ -63,7 +63,7 @@ headers = { version = "0.4", optional = true } # To be moved hashbag = { version = "0.1.11", features = ["serde"] } derive_more = "0.99.17" -hyper = "0.14" +hyper = "1.0" troupe = "0.1.0" [target.'cfg(target_arch = "wasm32")'.dependencies] diff --git a/squire_sdk/src/client/mod.rs b/squire_sdk/src/client/mod.rs index 505a8112..153d4ea0 100644 --- a/squire_sdk/src/client/mod.rs +++ b/squire_sdk/src/client/mod.rs @@ -3,7 +3,7 @@ use std::marker::PhantomData; use serde::de::DeserializeOwned; use squire_lib::{operations::OpResult, tournament::TournRole}; use tokio::sync::watch::Receiver as Subscriber; -use troupe::prelude::Tracker; +use troupe::sink::permanent::Tracker; use self::{ builder::ClientBuilder, @@ -74,7 +74,6 @@ impl UserInfo { } } -#[derive(Debug)] pub struct SquireClient { user: SessionWatcher, client: NetworkClient, diff --git a/squire_sdk/src/client/network.rs b/squire_sdk/src/client/network.rs index 0df97820..254f1826 100644 --- a/squire_sdk/src/client/network.rs +++ b/squire_sdk/src/client/network.rs @@ -3,15 +3,15 @@ use std::fmt::Debug; use derive_more::From; use futures::SinkExt; use squire_lib::{accounts::SquireAccount, tournament::TournamentId}; -use troupe::prelude::{ActorState, Permanent, Scheduler, SinkActor}; +use troupe::{prelude::*, compat::{SendableFuture, Sendable}}; use super::session::{SessionBroadcaster, SessionWatcher}; use crate::{ - api::{Credentials, GetRequest, GuestSession, Login, PostRequest, SessionToken}, - compat::{NetworkResponse, Websocket, WebsocketMessage, log}, + api::{Credentials, GuestSession, Login, PostRequest, SessionToken}, + compat::{NetworkResponse, Websocket, WebsocketMessage, log, Client, Request, Response, NetworkError}, }; -pub type NetworkClient = SyncClient; +pub type NetworkClient = SinkClient; #[derive(Debug)] pub struct NetworkState { diff --git a/squire_sdk/src/client/tournaments.rs b/squire_sdk/src/client/tournaments.rs index b43d8f71..2f6dc72c 100644 --- a/squire_sdk/src/client/tournaments.rs +++ b/squire_sdk/src/client/tournaments.rs @@ -8,10 +8,10 @@ use squire_lib::{ tournament::TournamentId, }; use tokio::sync::watch::{channel as watch_channel, Receiver as Watcher, Sender as Broadcaster}; -use troupe::prelude::*; +use troupe::{prelude::*, sink::permanent::Tracker}; use uuid::Uuid; -use super::{network::NetworkState, OnUpdate}; +use super::{network::NetworkCommand, OnUpdate}; use crate::{ compat::{log, Websocket, WebsocketError, WebsocketMessage, WebsocketResult}, sync::{ @@ -22,7 +22,7 @@ use crate::{ }; /// A container for the channels used to communicate with the tournament management task. -#[derive(Debug, Clone)] +#[derive(Clone)] pub struct TournsClient { client: SinkClient, } @@ -56,7 +56,6 @@ impl ActorState for ManagerState { type Message = ManagementCommand; type Output = (); - async fn process(&mut self, scheduler: &mut Scheduler, msg: Self::Message) { match msg { ManagementCommand::Query(id, query) => { @@ -244,7 +243,7 @@ impl ManagerState { let (sink, stream) = ws.split(); let (broad, sub) = watch_channel(()); entry.get_mut().comm = Some((sink, broad)); - scheduler.add_stream(stream); + scheduler.attach_stream(stream.fuse()); sub } }, @@ -257,7 +256,7 @@ impl ManagerState { comm: Some((sink, broad)), }; let _ = entry.insert(tc); - scheduler.add_stream(stream); + scheduler.attach_stream(stream.fuse()); sub } } diff --git a/squire_sdk/tests/server/utils.rs b/squire_sdk/tests/server/utils.rs index cdc0dbdc..64ff199b 100644 --- a/squire_sdk/tests/server/utils.rs +++ b/squire_sdk/tests/server/utils.rs @@ -5,7 +5,6 @@ use http::{ header::{CONTENT_TYPE, SET_COOKIE}, Method, }; -use hyper::Body; use serde::{de::DeserializeOwned, Serialize}; use tower::Service;