diff options
| author | Matthieu Pignolet <matthieu@matthieu-dev.xyz> | 2023-07-05 07:18:34 +0000 |
|---|---|---|
| committer | Matthieu Pignolet <matthieu@matthieu-dev.xyz> | 2023-07-05 07:18:34 +0000 |
| commit | f794c183967893a6585323b299e875fab604e39e (patch) | |
| tree | f04b3caae958ffb42625c5a97465673c5dfff06c /exes/gateway | |
| parent | e79034a44d6a747cac94e1d425bc200341e40f98 (diff) | |
bump all dependenciesHEADupdate/2025main
Diffstat (limited to 'exes/gateway')
| -rw-r--r-- | exes/gateway/Cargo.toml | 10 | ||||
| -rw-r--r-- | exes/gateway/src/lib.rs | 34 |
2 files changed, 24 insertions, 20 deletions
diff --git a/exes/gateway/Cargo.toml b/exes/gateway/Cargo.toml index eeee408..da5cdec 100644 --- a/exes/gateway/Cargo.toml +++ b/exes/gateway/Cargo.toml @@ -17,8 +17,8 @@ anyhow = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } -tokio-stream = "0.1.11" -twilight-gateway = { default-features = false, features = ["rustls-webpki-roots"], version = "0.14.1" } -twilight-model = "0.14.2" -bytes = "1.3.0" -async-nats = "0.26.0" +tokio-stream = "0.1.14" +twilight-gateway = { default-features = false, features = ["rustls-webpki-roots"], version = "0.15.2" } +twilight-model = "0.15.2" +bytes = "1.4.0" +async-nats = "0.29.0" diff --git a/exes/gateway/src/lib.rs b/exes/gateway/src/lib.rs index ddc4bbd..44fcce1 100644 --- a/exes/gateway/src/lib.rs +++ b/exes/gateway/src/lib.rs @@ -20,9 +20,8 @@ use shared::{ }; use std::{convert::TryFrom, future::Future, pin::Pin, str::FromStr}; use tokio::{select, sync::oneshot}; -use tokio_stream::StreamExt; use tracing_opentelemetry::OpenTelemetrySpanExt; -use twilight_gateway::{Event, Shard}; +use twilight_gateway::{Event, Shard, ShardId}; pub mod config; use tracing::{debug, error, info, info_span, instrument, Instrument}; use twilight_model::gateway::event::DispatchEvent; @@ -47,25 +46,32 @@ impl Component for GatewayServer { mut stop: oneshot::Receiver<()>, ) -> AnyhowResultFuture<()> { Box::pin(async move { - let (shard, mut events) = Shard::builder(settings.token.clone(), settings.intents) - .shard(settings.shard, settings.shard_total)? - .build(); + let mut shard = Shard::new( + ShardId::new(settings.shard, settings.shard_total), + settings.token.clone(), + settings.intents, + ); let nats = Into::<Pin<Box<dyn Future<Output = anyhow::Result<Client>> + Send>>>::into( settings.nats, ) .await?; - shard.start().await?; loop { select! { - event = events.next() => { - if let Some(event) = event { - let _ = handle_event(event, &nats) - .await - .map_err(|err| error!(error = ?err, "event publish failed")); - } else { - break + event = shard.next_event() => { + match event { + Ok(event) => { + let _ = handle_event(event, &nats) + .await + .map_err(|err| error!(error = ?err, "event publish failed")); + }, + Err(source) => { + if source.is_fatal() { + break; + } + continue; + } } }, _ = (&mut stop) => break @@ -73,8 +79,6 @@ impl Component for GatewayServer { } info!("stopping shard..."); - shard.shutdown(); - Ok(()) }) } |
