Make raknet messages generic

This commit is contained in:
lcdr
2020-06-10 13:05:48 +02:00
parent f12fcacf4d
commit 82cdcf25c1
8 changed files with 18 additions and 31 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ use endio::LittleEndian as LE;
use crate::common::{LuStr33, LuWStr33, ServiceId};
use crate::general::client::{GeneralMessage, Handshake};
rak_client_msg!(LuMessage);
pub type Message = crate::raknet::client::Message<LuMessage>;
impl From<GeneralMessage> for Message {
fn from(msg: GeneralMessage) -> Self {
+1 -1
View File
@@ -7,7 +7,7 @@ use endio::LittleEndian as LE;
use crate::common::{err, LuWStr33, LuWStr41, LuWStr128, LuWStr256, ServiceId};
pub use crate::general::server::GeneralMessage;
rak_server_msg!(LuMessage);
pub type Message = crate::raknet::server::Message<LuMessage>;
#[derive(Debug, Deserialize)]
#[non_exhaustive]
-1
View File
@@ -1,5 +1,4 @@
#![feature(arbitrary_enum_discriminant)]
#[macro_use]
pub mod raknet;
pub mod auth;
pub mod chat;
+8 -13
View File
@@ -4,32 +4,27 @@ use std::net::Ipv4Addr;
use endio::{LEWrite, Serialize};
use endio::LittleEndian as LE;
// todo[chalk]: generic type instead of macro
macro_rules! rak_client_msg {
($T:ty) => {
#[derive(Debug, Serialize)]
#[non_exhaustive]
#[repr(u8)]
pub enum Message {
ConnectedPong($crate::raknet::client::ConnectedPong) = 3,
ConnectionRequestAccepted($crate::raknet::client::ConnectionRequestAccepted) = 14,
pub enum Message<U> {
ConnectedPong(ConnectedPong) = 3,
ConnectionRequestAccepted(ConnectionRequestAccepted) = 14,
DisconnectionNotification = 19,
UserMessage($T) = 83,
UserMessage(U) = 83,
}
impl From<$crate::raknet::client::ConnectedPong> for Message {
fn from(msg: $crate::raknet::client::ConnectedPong) -> Self {
impl<U> From<ConnectedPong> for Message<U> {
fn from(msg: ConnectedPong) -> Self {
Message::ConnectedPong(msg)
}
}
impl From<$crate::raknet::client::ConnectionRequestAccepted> for Message {
fn from(msg: $crate::raknet::client::ConnectionRequestAccepted) -> Self {
impl<U> From<ConnectionRequestAccepted> for Message<U> {
fn from(msg: ConnectionRequestAccepted) -> Self {
Message::ConnectionRequestAccepted(msg)
}
}
}
}
#[derive(Debug, Serialize)]
pub struct ConnectedPong {
-2
View File
@@ -1,4 +1,2 @@
#[macro_use]
pub mod client;
#[macro_use]
pub mod server;
+5 -10
View File
@@ -7,20 +7,15 @@ use endio::LittleEndian as LE;
use crate::common::SystemAddress;
// todo[chalk]: generic type instead of macro
macro_rules! rak_server_msg {
($T:ty) => {
#[derive(Debug, Deserialize)]
#[non_exhaustive]
#[repr(u8)]
pub enum Message {
InternalPing($crate::raknet::server::InternalPing) = 0,
ConnectionRequest($crate::raknet::server::ConnectionRequest) = 4,
NewIncomingConnection($crate::raknet::server::NewIncomingConnection) = 17,
pub enum Message<U> {
InternalPing(InternalPing) = 0,
ConnectionRequest(ConnectionRequest) = 4,
NewIncomingConnection(NewIncomingConnection) = 17,
DisconnectionNotification = 19,
UserMessage($T) = 83,
}
}
UserMessage(U) = 83,
}
#[derive(Debug, Deserialize)]
+1 -1
View File
@@ -6,7 +6,7 @@ use endio::LittleEndian as LE;
use crate::common::{ObjId, LuWStr33, ServiceId, ZoneId};
use crate::general::client::{DisconnectNotify, GeneralMessage, Handshake};
rak_client_msg!(LuMessage);
pub type Message = crate::raknet::client::Message<LuMessage>;
impl From<GeneralMessage> for Message {
fn from(msg: GeneralMessage) -> Self {
+2 -2
View File
@@ -9,7 +9,7 @@ use crate::common::{err, ObjId, LuWStr33, LuWStr42, LuStr33, ServiceId, ZoneId};
use crate::chat::server::ChatMessage;
pub use crate::general::server::GeneralMessage;
rak_server_msg!(LuMessage);
pub type Message = crate::raknet::server::Message<LuMessage>;
#[derive(Debug, Deserialize)]
#[non_exhaustive]
@@ -152,7 +152,7 @@ impl<R: LERead> Deserialize<LE, R> for CharacterCreateRequest
let eyebrow_style = reader.read()?;
let eye_style = reader.read()?;
let mouth_style = reader.read()?;
let _unused: u8 = reader.read()?;
let _unused: u8 = reader.read()?;
Ok(Self {
char_name,