summaryrefslogtreecommitdiff
path: root/exes/gateway
diff options
context:
space:
mode:
authorMatthieu Pignolet <matthieu@matthieu-dev.xyz>2023-07-05 07:18:34 +0000
committerMatthieu Pignolet <matthieu@matthieu-dev.xyz>2023-07-05 07:18:34 +0000
commitf794c183967893a6585323b299e875fab604e39e (patch)
treef04b3caae958ffb42625c5a97465673c5dfff06c /exes/gateway
parente79034a44d6a747cac94e1d425bc200341e40f98 (diff)
bump all dependenciesHEADupdate/2025main
Diffstat (limited to 'exes/gateway')
-rw-r--r--exes/gateway/Cargo.toml10
-rw-r--r--exes/gateway/src/lib.rs34
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(())
})
}