Compare commits
14 Commits
9622415d0d
...
60aa8414c1
Author | SHA1 | Date |
---|---|---|
kozabrada123 | 60aa8414c1 | |
kozabrada123 | b3c1e37fa4 | |
kozabrada123 | 60c0c3c536 | |
kozabrada123 | a787a989ef | |
kozabrada123 | 2bf022924b | |
Flori | 011b214ea1 | |
kozabrada123 | 8a2bc8287e | |
kozabrada123 | 8243f103f9 | |
kozabrada123 | 34cc344c8d | |
kozabrada123 | 72936d4f21 | |
kozabrada123 | 921a3ef9c0 | |
kozabrada123 | c3017df1c2 | |
kozabrada123 | e2b69487aa | |
kozabrada123 | d37415fc13 |
|
@ -233,7 +233,6 @@ dependencies = [
|
|||
"reqwest",
|
||||
"rustls",
|
||||
"rustls-native-certs",
|
||||
"safina-timer",
|
||||
"serde",
|
||||
"serde-aux",
|
||||
"serde_json",
|
||||
|
@ -247,6 +246,7 @@ dependencies = [
|
|||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"wasm-bindgen-test",
|
||||
"wasmtimer",
|
||||
"ws_stream_wasm",
|
||||
]
|
||||
|
||||
|
@ -1800,15 +1800,6 @@ version = "1.0.16"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
|
||||
|
||||
[[package]]
|
||||
name = "safina-timer"
|
||||
version = "0.1.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1081a264d1a3e81b75c4bcd5696094fb6ce470c2ded14cbd47bcb5229079b9df"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "salsa20"
|
||||
version = "0.10.2"
|
||||
|
@ -2819,6 +2810,20 @@ dependencies = [
|
|||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasmtimer"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5f656cd8858a5164932d8a90f936700860976ec21eb00e0fe2aa8cab13f6b4cf"
|
||||
dependencies = [
|
||||
"futures",
|
||||
"js-sys",
|
||||
"parking_lot",
|
||||
"pin-utils",
|
||||
"slab",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.66"
|
||||
|
|
|
@ -57,7 +57,6 @@ sqlx = { version = "0.7.3", features = [
|
|||
], optional = true }
|
||||
discortp = { version = "0.5.0", optional = true, features = ["rtp", "discord", "demux"] }
|
||||
crypto_secretbox = {version = "0.1.1", optional = true}
|
||||
safina-timer = "0.1.11"
|
||||
rand = "0.8.5"
|
||||
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
|
@ -75,6 +74,7 @@ getrandom = { version = "0.2.12" }
|
|||
getrandom = { version = "0.2.12", features = ["js"] }
|
||||
ws_stream_wasm = "0.7.4"
|
||||
wasm-bindgen-futures = "0.4.39"
|
||||
wasmtimer = "0.2.0"
|
||||
|
||||
[dev-dependencies]
|
||||
lazy_static = "1.4.0"
|
||||
|
|
|
@ -8,6 +8,11 @@ use chorus::{
|
|||
use std::{sync::Arc, time::Duration};
|
||||
use tokio::{self};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::sleep;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::tokio::sleep;
|
||||
|
||||
// This example creates a simple gateway connection and a basic observer struct
|
||||
|
||||
// Due to certain limitations all observers must impl debug
|
||||
|
@ -54,10 +59,9 @@ async fn main() {
|
|||
let mut identify = GatewayIdentifyPayload::common();
|
||||
identify.token = token;
|
||||
gateway.send_identify(identify).await;
|
||||
safina_timer::start_timer_thread();
|
||||
|
||||
// Do something on the main thread so we don't quit
|
||||
loop {
|
||||
safina_timer::sleep_for(Duration::MAX).await
|
||||
sleep(Duration::from_secs(3600)).await;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,11 @@ use std::time::Duration;
|
|||
use chorus::gateway::Gateway;
|
||||
use chorus::{self, types::GatewayIdentifyPayload};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::sleep;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::tokio::sleep;
|
||||
|
||||
/// This example creates a simple gateway connection and a session with an Identify event
|
||||
#[tokio::main(flavor = "current_thread")]
|
||||
async fn main() {
|
||||
|
@ -10,7 +15,7 @@ async fn main() {
|
|||
let websocket_url_spacebar = "wss://gateway.old.server.spacebar.chat/".to_string();
|
||||
|
||||
// Initiate the gateway connection, starting a listener in one thread and a heartbeat handler in another
|
||||
let _ = Gateway::spawn(websocket_url_spacebar).await.unwrap();
|
||||
let gateway = Gateway::spawn(websocket_url_spacebar).await.unwrap();
|
||||
|
||||
// At this point, we are connected to the server and are sending heartbeats, however we still haven't authenticated
|
||||
|
||||
|
@ -26,10 +31,10 @@ async fn main() {
|
|||
identify.token = token;
|
||||
|
||||
// Send off the event
|
||||
safina_timer::start_timer_thread();
|
||||
gateway.send_identify(identify).await;
|
||||
|
||||
// Do something on the main thread so we don't quit
|
||||
loop {
|
||||
safina_timer::sleep_for(Duration::MAX).await
|
||||
sleep(Duration::from_secs(3600)).await;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,20 @@
|
|||
use futures_util::SinkExt;
|
||||
use log::*;
|
||||
use std::time::{self, Duration, Instant};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::Instant;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::std::Instant;
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::sleep_until;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::tokio::sleep_until;
|
||||
|
||||
use std::time::Duration;
|
||||
|
||||
use tokio::sync::mpsc::{Receiver, Sender};
|
||||
|
||||
use safina_timer::sleep_until;
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::task;
|
||||
|
||||
|
@ -57,12 +68,10 @@ impl HeartbeatHandler {
|
|||
mut receive: Receiver<HeartbeatThreadCommunication>,
|
||||
mut kill_receive: tokio::sync::broadcast::Receiver<()>,
|
||||
) {
|
||||
let mut last_heartbeat_timestamp: Instant = time::Instant::now();
|
||||
let mut last_heartbeat_timestamp: Instant = Instant::now();
|
||||
let mut last_heartbeat_acknowledged = true;
|
||||
let mut last_seq_number: Option<u64> = None;
|
||||
|
||||
safina_timer::start_timer_thread();
|
||||
|
||||
loop {
|
||||
if kill_receive.try_recv().is_ok() {
|
||||
trace!("GW: Closing heartbeat task");
|
||||
|
@ -123,7 +132,7 @@ impl HeartbeatHandler {
|
|||
break;
|
||||
}
|
||||
|
||||
last_heartbeat_timestamp = time::Instant::now();
|
||||
last_heartbeat_timestamp = Instant::now();
|
||||
last_heartbeat_acknowledged = false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,25 @@
|
|||
use std::{
|
||||
sync::Arc,
|
||||
time::{Duration, Instant},
|
||||
};
|
||||
|
||||
use futures_util::SinkExt;
|
||||
use log::*;
|
||||
use safina_timer::sleep_until;
|
||||
use tokio::sync::{mpsc::Sender, Mutex};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::Instant;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::std::Instant;
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::sleep_until;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::tokio::sleep_until;
|
||||
|
||||
use std::{sync::Arc, time::Duration};
|
||||
|
||||
use tokio::sync::{
|
||||
mpsc::{Receiver, Sender},
|
||||
Mutex,
|
||||
};
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::task;
|
||||
|
||||
use crate::{
|
||||
gateway::heartbeat::HEARTBEAT_ACK_TIMEOUT,
|
||||
|
@ -37,7 +50,7 @@ impl VoiceHeartbeatHandler {
|
|||
let kill_receive = kill_rc.resubscribe();
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
tokio::task::spawn(async move {
|
||||
task::spawn(async move {
|
||||
Self::heartbeat_task(
|
||||
websocket_tx,
|
||||
heartbeat_interval,
|
||||
|
@ -73,15 +86,13 @@ impl VoiceHeartbeatHandler {
|
|||
websocket_tx: Arc<Mutex<Sink>>,
|
||||
heartbeat_interval: Duration,
|
||||
starting_nonce: u64,
|
||||
mut receive: tokio::sync::mpsc::Receiver<VoiceHeartbeatThreadCommunication>,
|
||||
mut receive: Receiver<VoiceHeartbeatThreadCommunication>,
|
||||
mut kill_receive: tokio::sync::broadcast::Receiver<()>,
|
||||
) {
|
||||
let mut last_heartbeat_timestamp: Instant = Instant::now();
|
||||
let mut last_heartbeat_acknowledged = true;
|
||||
let mut nonce: u64 = starting_nonce;
|
||||
|
||||
safina_timer::start_timer_thread();
|
||||
|
||||
loop {
|
||||
if kill_receive.try_recv().is_ok() {
|
||||
trace!("VGW: Closing heartbeat task");
|
||||
|
|
|
@ -12,6 +12,11 @@ use wasm_bindgen_test::*;
|
|||
#[cfg(target_arch = "wasm32")]
|
||||
wasm_bindgen_test_configure!(run_in_browser);
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
use tokio::time::sleep;
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
use wasmtimer::tokio::sleep;
|
||||
|
||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||
#[cfg_attr(not(target_arch = "wasm32"), tokio::test)]
|
||||
/// Tests establishing a connection (hello and heartbeats) on the local gateway;
|
||||
|
@ -61,11 +66,9 @@ async fn test_gateway_authenticate() {
|
|||
|
||||
gateway.send_identify(identify).await;
|
||||
|
||||
let current_time = std::time::Instant::now();
|
||||
|
||||
tokio::select! {
|
||||
// Fail, we timed out waiting for it
|
||||
() = safina_timer::sleep_until(current_time + Duration::from_secs(20)) => {
|
||||
() = sleep(Duration::from_secs(20)) => {
|
||||
println!("Timed out waiting for event, failing..");
|
||||
assert!(false);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue