use serde::{Deserialize, Serialize};
use crate::common::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AnnounceRequest {
pub action: AnnounceAction,
pub info_hash: InfoHash,
pub peer_id: PeerId,
#[serde(rename = "left")]
pub bytes_left: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event: Option<AnnounceEvent>,
pub offers: Option<Vec<AnnounceRequestOffer>>,
pub numwant: Option<usize>,
pub answer: Option<RtcAnswer>,
#[serde(rename = "to_peer_id")]
pub answer_to_peer_id: Option<PeerId>,
#[serde(rename = "offer_id")]
pub answer_offer_id: Option<OfferId>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum AnnounceEvent {
Started,
Stopped,
Completed,
Update,
}
impl Default for AnnounceEvent {
fn default() -> Self {
Self::Update
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct AnnounceRequestOffer {
pub offer: RtcOffer,
pub offer_id: OfferId,
}