aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/packet-macros/src
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2022-05-02 03:10:52 +0000
committerGitHub <noreply@github.com>2022-05-02 03:10:52 +0000
commit728f0399ff1a03f5ce8134b46e6150daf1e2076d (patch)
tree5a21ef239d8e5cabdc0b5d3d511e35dc25435041 /azalea-protocol/packet-macros/src
parentc2262a212328e7a9e00091d7b41a8d8bfb5b3007 (diff)
parente1b6bc965a3f71d64b4dc3075da21c578ab5b508 (diff)
downloadazalea-drasl-728f0399ff1a03f5ce8134b46e6150daf1e2076d.tar.xz
Merge pull request #4 from mat-1/sync-decoding
Reduce usage of AsyncRead
Diffstat (limited to 'azalea-protocol/packet-macros/src')
-rwxr-xr-xazalea-protocol/packet-macros/src/lib.rs32
1 files changed, 12 insertions, 20 deletions
diff --git a/azalea-protocol/packet-macros/src/lib.rs b/azalea-protocol/packet-macros/src/lib.rs
index 6c1998b9..0d912257 100755
--- a/azalea-protocol/packet-macros/src/lib.rs
+++ b/azalea-protocol/packet-macros/src/lib.rs
@@ -25,11 +25,11 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
syn::Type::Path(_) => {
if f.attrs.iter().any(|a| a.path.is_ident("varint")) {
quote! {
- let #field_name = crate::mc_buf::McBufVarintReadable::varint_read_into(buf).await?;
+ let #field_name = crate::mc_buf::McBufVarintReadable::varint_read_into(buf)?;
}
} else {
quote! {
- let #field_name = crate::mc_buf::McBufReadable::read_into(buf).await?;
+ let #field_name = crate::mc_buf::McBufReadable::read_into(buf)?;
}
}
}
@@ -44,12 +44,8 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
let read_field_names = named.iter().map(|f| &f.ident).collect::<Vec<_>>();
quote! {
- #[async_trait::async_trait]
impl crate::mc_buf::McBufReadable for #ident {
- async fn read_into<R>(buf: &mut R) -> Result<Self, String>
- where
- R: tokio::io::AsyncRead + std::marker::Unpin + std::marker::Send,
- {
+ fn read_into(buf: &mut impl std::io::Read) -> Result<Self, String> {
#(#read_fields)*
Ok(#ident {
#(#read_field_names: #read_field_names),*
@@ -73,13 +69,10 @@ fn create_impl_mcbufreadable(ident: &Ident, data: &Data) -> proc_macro2::TokenSt
}
quote! {
- #[async_trait::async_trait]
impl crate::mc_buf::McBufReadable for #ident {
- async fn read_into<R>(buf: &mut R) -> Result<Self, String>
- where
- R: tokio::io::AsyncRead + std::marker::Unpin + std::marker::Send,
+ fn read_into(buf: &mut impl std::io::Read) -> Result<Self, String>
{
- let id = buf.read_varint().await?;
+ let id = buf.read_varint()?;
match id {
#match_contents
_ => Err(format!("Unknown enum variant {}", id)),
@@ -189,11 +182,11 @@ fn as_packet_derive(input: TokenStream, state: proc_macro2::TokenStream) -> Toke
crate::mc_buf::McBufWritable::write_into(self, buf)
}
- pub async fn read<T: tokio::io::AsyncRead + std::marker::Unpin + std::marker::Send>(
- buf: &mut T,
+ pub fn read(
+ buf: &mut impl std::io::Read,
) -> Result<#state, String> {
use crate::mc_buf::McBufReadable;
- Ok(Self::read_into(buf).await?.get())
+ Ok(Self::read_into(buf)?.get())
}
}
@@ -339,7 +332,7 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
#state_name::#name(packet) => packet.write(buf),
});
serverbound_read_match_contents.extend(quote! {
- #id => #module::#name::read(buf).await?,
+ #id => #module::#name::read(buf)?,
});
}
for PacketIdPair { id, module, name } in input.clientbound.packets {
@@ -353,7 +346,7 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
#state_name::#name(packet) => packet.write(buf),
});
clientbound_read_match_contents.extend(quote! {
- #id => #module::#name::read(buf).await?,
+ #id => #module::#name::read(buf)?,
});
}
@@ -366,7 +359,6 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
#enum_contents
}
- #[async_trait::async_trait]
impl crate::packets::ProtocolPacket for #state_name {
fn id(&self) -> u32 {
match self {
@@ -381,10 +373,10 @@ pub fn declare_state_packets(input: TokenStream) -> TokenStream {
}
/// Read a packet by its id, ConnectionProtocol, and flow
- async fn read<T: tokio::io::AsyncRead + std::marker::Unpin + std::marker::Send>(
+ fn read(
id: u32,
flow: &crate::connect::PacketFlow,
- buf: &mut T,
+ buf: &mut impl std::io::Read,
) -> Result<#state_name, String>
where
Self: Sized,