summaryrefslogtreecommitdiff
path: root/client-native-lib/src/lib.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-10-07 23:25:39 +0200
committermetamuffin <metamuffin@disroot.org>2022-10-07 23:25:39 +0200
commit1d23f7b835ec6714cda248981e642c48fc551dce (patch)
tree8f2f37269598e7d7fdf42d511c1eae7bea30c47a /client-native-lib/src/lib.rs
parent0b75a0609e65a4d09e12d9f8466d6ece52869a94 (diff)
downloadkeks-meet-1d23f7b835ec6714cda248981e642c48fc551dce.tar
keks-meet-1d23f7b835ec6714cda248981e642c48fc551dce.tar.bz2
keks-meet-1d23f7b835ec6714cda248981e642c48fc551dce.tar.zst
transport works.
Diffstat (limited to 'client-native-lib/src/lib.rs')
-rw-r--r--client-native-lib/src/lib.rs23
1 files changed, 14 insertions, 9 deletions
diff --git a/client-native-lib/src/lib.rs b/client-native-lib/src/lib.rs
index 27c0595..7a0d0d0 100644
--- a/client-native-lib/src/lib.rs
+++ b/client-native-lib/src/lib.rs
@@ -10,9 +10,9 @@
use std::{pin::Pin, sync::Arc};
use futures_util::Future;
-use peer::Peer;
-use protocol::ProvideInfo;
use instance::Instance;
+use peer::{Peer, TransportChannel};
+use protocol::ProvideInfo;
use tokio::sync::RwLock;
use webrtc::{
api::{
@@ -22,10 +22,10 @@ use webrtc::{
};
pub mod crypto;
+pub mod instance;
pub mod peer;
pub mod protocol;
pub mod signaling;
-pub mod instance;
pub use webrtc;
@@ -46,17 +46,22 @@ pub(crate) fn build_api() -> webrtc::api::API {
.build()
}
+pub type DynFut<T> = Pin<Box<dyn Future<Output = T> + Send>>;
+
pub trait LocalResource: Send + Sync + 'static {
fn info(&self) -> ProvideInfo;
- fn on_request(&self, peer: Arc<Peer>) -> Box<dyn Future<Output = ()>>;
+ fn on_request(&self, peer: Arc<Peer>) -> DynFut<()>;
}
pub trait EventHandler: Send + Sync + 'static {
- fn remote_resource_added(
+ fn peer_join(&self, peer: Arc<Peer>) -> DynFut<()>;
+ fn peer_leave(&self, peer: Arc<Peer>) -> DynFut<()>;
+ fn resource_added(&self, peer: Arc<Peer>, info: ProvideInfo) -> DynFut<()>;
+ fn resource_removed(&self, peer: Arc<Peer>, id: String) -> DynFut<()>;
+ fn resource_connected(
&self,
peer: Arc<Peer>,
- info: ProvideInfo,
- ) -> Pin<Box<dyn Future<Output = ()>>>;
- fn remote_resource_removed(&self, peer: Arc<Peer>, id: String)
- -> Pin<Box<dyn Future<Output = ()>>>;
+ resource: &ProvideInfo,
+ channel: TransportChannel,
+ ) -> DynFut<()>;
}