#![doc = include_str!("../README.md")]
#![cfg_attr(doc, allow(unknown_lints))]
#![deny(rustdoc::all)]
use serde::{Deserialize, Serialize};
pub const MATCH_ALPN: &[u8] = b"/bones/match/0";
pub const PLAY_ALPN: &[u8] = b"/bones/play/0";
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum MatchmakerRequest {
RequestMatch(MatchInfo),
}
#[derive(Serialize, Deserialize, Debug, Clone, Hash, Eq, PartialEq)]
pub struct MatchInfo {
pub client_count: u32,
pub match_data: Vec<u8>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum MatchmakerResponse {
Accepted,
ClientCount(u32),
Success {
random_seed: u64,
player_idx: u32,
client_count: u32,
player_ids: Vec<(u32, iroh_net::NodeAddr)>,
},
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct SendProxyMessage {
pub target_client: TargetClient,
pub message: Vec<u8>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum TargetClient {
All,
One(u8),
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct RecvProxyMessage {
pub from_client: u8,
pub message: Vec<u8>,
}