This commit is contained in:
parent
3921537360
commit
32de6d5a38
4 changed files with 739 additions and 770 deletions
1459
Cargo.lock
generated
1459
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
12
Cargo.toml
12
Cargo.toml
|
|
@ -39,8 +39,8 @@ incremental = false
|
|||
debug = false
|
||||
|
||||
[dependencies]
|
||||
avian2d = { version = "0.4.0", features = ["serialize", "simd"] }
|
||||
bevy = { version = "0.17.2", default-features = false, features = [
|
||||
avian2d = { version = "0.4.1", features = ["serialize", "simd"] }
|
||||
bevy = { version = "0.17.3", default-features = false, features = [
|
||||
"bevy_color",
|
||||
"bevy_core_pipeline",
|
||||
"bevy_remote",
|
||||
|
|
@ -55,15 +55,15 @@ bevy = { version = "0.17.2", default-features = false, features = [
|
|||
"std",
|
||||
"wayland",
|
||||
] }
|
||||
bevy_rand = { version = "0.12.0", features = ["wyrand", "std"] }
|
||||
clap = { version = "4.5.48", features = ["derive"] }
|
||||
bevy_rand = { version = "0.12.1", features = ["wyrand", "std"] }
|
||||
clap = { version = "4.5.53", features = ["derive"] }
|
||||
crossbeam-channel = "0.5.15"
|
||||
log = { version = "0.4.28", features = ["release_max_level_warn"] }
|
||||
log = { version = "0.4.29", features = ["release_max_level_warn"] }
|
||||
rand = { version = "0.9.2", default-features = false, features = [
|
||||
"std",
|
||||
"thread_rng",
|
||||
] }
|
||||
uuid = { version = "1.18.1", features = ["v4", "fast-rng"] }
|
||||
uuid = { version = "1.19.0", features = ["v4", "fast-rng"] }
|
||||
wyrand = "0.3.2"
|
||||
|
||||
[features]
|
||||
|
|
|
|||
|
|
@ -40,6 +40,19 @@ impl PeerReceiveTiming {
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: this is a pretty minimal error type to avoid panicking, it should at least impl Error or something
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub enum NetworkConvertError {
|
||||
FromSliceError(TryFromSliceError),
|
||||
ArrayLengthError,
|
||||
}
|
||||
|
||||
impl From<TryFromSliceError> for NetworkConvertError {
|
||||
fn from(value: TryFromSliceError) -> Self {
|
||||
Self::FromSliceError(value)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub struct Address(SocketAddr);
|
||||
|
||||
|
|
@ -79,25 +92,24 @@ impl From<Address> for Vec<u8> {
|
|||
}
|
||||
|
||||
impl TryFrom<Vec<u8>> for Address {
|
||||
type Error = TryFromSliceError;
|
||||
type Error = NetworkConvertError;
|
||||
|
||||
fn try_from(value: Vec<u8>) -> std::result::Result<Self, Self::Error> {
|
||||
fn try_from(mut value: Vec<u8>) -> std::result::Result<Self, Self::Error> {
|
||||
const PORT_SIZE: usize = 2;
|
||||
|
||||
if value.len() < PORT_SIZE {
|
||||
todo!();
|
||||
return Err(NetworkConvertError::ArrayLengthError);
|
||||
}
|
||||
let mut bytes = value.clone();
|
||||
let port = u16::from_le_bytes(TryInto::<[u8; PORT_SIZE]>::try_into(
|
||||
bytes.split_off(bytes.len() - PORT_SIZE).as_slice(),
|
||||
value.split_off(value.len() - PORT_SIZE).as_slice(),
|
||||
)?);
|
||||
let addr = if let Ok(bytes) =
|
||||
TryInto::<[u8; Ipv4Addr::BITS as usize / 8]>::try_into(bytes.as_slice())
|
||||
let addr = if let Ok(value) =
|
||||
TryInto::<[u8; Ipv4Addr::BITS as usize / 8]>::try_into(value.as_slice())
|
||||
{
|
||||
SocketAddr::from((bytes, port))
|
||||
SocketAddr::from((value, port))
|
||||
} else {
|
||||
SocketAddr::from((
|
||||
TryInto::<[u8; Ipv6Addr::BITS as usize / 8]>::try_into(bytes.as_slice())?,
|
||||
TryInto::<[u8; Ipv6Addr::BITS as usize / 8]>::try_into(value.as_slice())?,
|
||||
port,
|
||||
))
|
||||
};
|
||||
|
|
|
|||
|
|
@ -34,14 +34,14 @@ impl NetworkReceive {
|
|||
}
|
||||
|
||||
/// Non-blocking iterator
|
||||
pub fn iter(&self) -> Iter {
|
||||
Iter(self.0.clone())
|
||||
pub fn iter<'a>(&'a self) -> Iter<'a> {
|
||||
Iter(&self.0)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Iter(ReceiveQueue);
|
||||
pub struct Iter<'a>(&'a ReceiveQueue);
|
||||
|
||||
impl Iterator for Iter {
|
||||
impl<'a> Iterator for Iter<'a> {
|
||||
type Item = NetworkMessage;
|
||||
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue