Manually implement std::default::Default for GatewayHeartbeat and GatewayHeartbeatAck

This commit is contained in:
bitfl0wer 2024-07-27 15:31:47 +02:00
parent 274b9ab0ca
commit 7bba7c6fcb
No known key found for this signature in database
GPG Key ID: 0ACD574FCF5226CF
1 changed files with 40 additions and 2 deletions

View File

@ -5,14 +5,52 @@
use crate::types::events::WebSocketEvent; use crate::types::events::WebSocketEvent;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Deserialize, Serialize, WebSocketEvent, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] #[derive(
Debug, Deserialize, Serialize, WebSocketEvent, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord,
)]
pub struct GatewayHeartbeat { pub struct GatewayHeartbeat {
pub op: u8, pub op: u8,
pub d: Option<u64>, pub d: Option<u64>,
} }
#[derive(Debug, Default, Deserialize, Serialize, Clone, WebSocketEvent, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] impl GatewayHeartbeat {
/// The Heartbeat packet a server would receive from a new or fresh Gateway connection.
pub fn first() -> Self {
Self::default()
}
/// Quickly create a [GatewayHeartbeat] with the correct `opcode` and the given `sequence_number`.
///
/// Shorthand for
/// ```rs
/// Self {
/// op: 1,
/// d: Some(sequence_number)
/// }
/// ```
pub fn new(sequence_number: u64) -> Self {
Self {
op: 1,
d: Some(sequence_number),
}
}
}
impl std::default::Default for GatewayHeartbeat {
fn default() -> Self {
Self { op: 1, d: None }
}
}
#[derive(
Debug, Deserialize, Serialize, Clone, WebSocketEvent, Copy, PartialEq, Eq, Hash, PartialOrd, Ord,
)]
pub struct GatewayHeartbeatAck { pub struct GatewayHeartbeatAck {
pub op: i32, pub op: i32,
} }
impl std::default::Default for GatewayHeartbeatAck {
fn default() -> Self {
Self { op: 11 }
}
}