aboutsummaryrefslogtreecommitdiff
path: root/client-native-lib
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-09-17 18:39:19 +0200
committermetamuffin <metamuffin@disroot.org>2022-09-17 18:39:19 +0200
commit45c7c27d5ebd54790d76dd34d97de35d221c8411 (patch)
treeef6f688f9a125102ec145083075cd3429fe17a05 /client-native-lib
parentfd005b751d1abc0835c3812f4b12aed55e5aac1c (diff)
downloadkeks-meet-45c7c27d5ebd54790d76dd34d97de35d221c8411.tar
keks-meet-45c7c27d5ebd54790d76dd34d97de35d221c8411.tar.bz2
keks-meet-45c7c27d5ebd54790d76dd34d97de35d221c8411.tar.zst
remove api interface from native lib (breaks rift)
Diffstat (limited to 'client-native-lib')
-rw-r--r--client-native-lib/src/lib.rs11
-rw-r--r--client-native-lib/src/peer.rs6
-rw-r--r--client-native-lib/src/state.rs27
3 files changed, 12 insertions, 32 deletions
diff --git a/client-native-lib/src/lib.rs b/client-native-lib/src/lib.rs
index d41fc58..70ec2bd 100644
--- a/client-native-lib/src/lib.rs
+++ b/client-native-lib/src/lib.rs
@@ -8,8 +8,8 @@
use log::debug;
use signaling::signaling_connect;
-use state::{HasPeer, PeerInit, State};
-use std::{marker::Sync, sync::Arc};
+use state::State;
+use std::sync::Arc;
use tokio::sync::{mpsc::unbounded_channel, RwLock};
use webrtc::{
api::{
@@ -31,11 +31,7 @@ pub struct Config {
pub secret: String,
}
-pub async fn connect<I, P>(config: Config, sup: Arc<I>) -> Arc<State<P, I>>
-where
- I: PeerInit<P> + Sync + std::marker::Send + 'static,
- P: HasPeer + Sync + std::marker::Send + 'static,
-{
+pub async fn connect(config: Config) -> Arc<State> {
let (sender, mut recv) = signaling_connect(&config.signaling_host, &config.secret).await;
let key = crypto::Key::derive(&config.secret);
@@ -58,7 +54,6 @@ where
sender,
config,
relay_tx,
- sup,
});
{
diff --git a/client-native-lib/src/peer.rs b/client-native-lib/src/peer.rs
index b682bb7..d2a6fbc 100644
--- a/client-native-lib/src/peer.rs
+++ b/client-native-lib/src/peer.rs
@@ -5,7 +5,7 @@
*/
use crate::{
protocol::{self, RelayMessage, Sdp},
- state::{HasPeer, PeerInit, State},
+ state::State,
};
use log::info;
use std::sync::Arc;
@@ -25,8 +25,8 @@ pub struct Peer {
}
impl Peer {
- pub async fn create<P: HasPeer, I: PeerInit<P>>(
- state: Arc<State<P, I>>,
+ pub async fn create(
+ state: Arc<State>,
signal: UnboundedSender<(usize, RelayMessage)>,
id: usize,
) -> Arc<Self> {
diff --git a/client-native-lib/src/state.rs b/client-native-lib/src/state.rs
index af4a05b..6182e66 100644
--- a/client-native-lib/src/state.rs
+++ b/client-native-lib/src/state.rs
@@ -3,9 +3,7 @@
which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
Copyright (C) 2022 metamuffin <metamuffin@disroot.org>
*/
-use std::{collections::HashMap, pin::Pin, sync::Arc};
-
-use futures_util::Future;
+use std::{collections::HashMap, sync::Arc};
use log::warn;
use tokio::sync::{mpsc::UnboundedSender, RwLock};
use webrtc::api::API;
@@ -17,27 +15,16 @@ use crate::{
Config,
};
-pub trait HasPeer {
- fn peer(&self) -> &Arc<Peer>;
-}
-pub trait PeerInit<P> {
- fn add_peer(
- &self,
- p: Arc<Peer>,
- ) -> Pin<Box<dyn Future<Output = Arc<P>> + 'static + Send + Sync>>;
-}
-
-pub struct State<P: HasPeer, I: PeerInit<P>> {
- pub sup: Arc<I>,
+pub struct State {
pub config: Config,
pub api: API,
pub key: Key,
pub my_id: RwLock<Option<usize>>,
pub sender: UnboundedSender<ServerboundPacket>,
- pub peers: RwLock<HashMap<usize, Arc<P>>>,
+ pub peers: RwLock<HashMap<usize, Arc<Peer>>>,
pub relay_tx: UnboundedSender<(usize, RelayMessage)>,
}
-impl<P: HasPeer, I: PeerInit<P>> State<P, I> {
+impl State {
pub async fn my_id(&self) -> usize {
self.my_id.read().await.expect("not initialized yet")
}
@@ -56,9 +43,7 @@ impl<P: HasPeer, I: PeerInit<P>> State<P, I> {
} else {
self.peers.write().await.insert(
id,
- self.sup
- .add_peer(Peer::create(self.clone(), self.relay_tx.clone(), id).await)
- .await,
+ Peer::create(self.clone(), self.relay_tx.clone(), id).await,
);
}
}
@@ -75,7 +60,7 @@ impl<P: HasPeer, I: PeerInit<P>> State<P, I> {
pub async fn on_relay(&self, sender: usize, p: RelayMessage) {
if let Some(peer) = self.peers.read().await.get(&sender).cloned() {
- peer.peer().on_relay(p).await
+ peer.on_relay(p).await
} else {
warn!("got a packet from a non-existent peer")
}