diff options
| author | mat <27899617+mat-1@users.noreply.github.com> | 2023-09-21 11:16:29 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 11:16:29 -0500 |
| commit | 7b3e2e4bf793466a351510c7fbbd08234e93bb0e (patch) | |
| tree | 7177a919de9982d9e3c7f36a76d2025696f465b6 /azalea-protocol/src/write.rs | |
| parent | 83cce236145cdab1872a472a70943b669a880965 (diff) | |
| download | azalea-drasl-7b3e2e4bf793466a351510c7fbbd08234e93bb0e.tar.xz | |
1.20.2 (#99)
* add configuration state
* start updating to 23w31a
* implement a bit more of 23w31a
* chunk batching
* start adding configuration state
* ioasfhjgsd
* almost works
* configuration state mostly implemented
* handle other packets in configuration state and fix keepalive
* cleanup, fix warnings
* 23w32a
* fix some doctests
* 23w33a
* 23w35a
* 1.20.2-pre2
* fix system conflicts
* 1.20.2-pre4
* make tests compile
* tests pass
* 1.20.2-rc2
* 1.20.2
* Revert "1.20.2"
This reverts commit dd152fd265332ead333c919e585ded6d609d7468.
* didn't mean to commit that code
---------
Co-authored-by: mat <git@matdoes.dev>
Diffstat (limited to 'azalea-protocol/src/write.rs')
| -rwxr-xr-x | azalea-protocol/src/write.rs | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/azalea-protocol/src/write.rs b/azalea-protocol/src/write.rs index 9e2e042b..0c3131a0 100755 --- a/azalea-protocol/src/write.rs +++ b/azalea-protocol/src/write.rs @@ -29,7 +29,7 @@ pub enum PacketEncodeError { }, } -pub fn packet_encoder<P: ProtocolPacket + std::fmt::Debug>( +pub fn serialize_packet<P: ProtocolPacket + Debug>( packet: &P, ) -> Result<Vec<u8>, PacketEncodeError> { let mut buf = Vec::new(); @@ -89,14 +89,28 @@ where W: AsyncWrite + Unpin + Send, { trace!("Sending packet: {packet:?}"); - let mut buf = packet_encoder(packet).unwrap(); + let raw_packet = serialize_packet(packet).unwrap(); + write_raw_packet(&raw_packet, stream, compression_threshold, cipher).await +} + +pub async fn write_raw_packet<W>( + raw_packet: &[u8], + stream: &mut W, + compression_threshold: Option<u32>, + cipher: &mut Option<Aes128CfbEnc>, +) -> std::io::Result<()> +where + W: AsyncWrite + Unpin + Send, +{ + trace!("Writing raw packet: {raw_packet:?}"); + let mut raw_packet = raw_packet.to_vec(); if let Some(threshold) = compression_threshold { - buf = compression_encoder(&buf, threshold).await.unwrap(); + raw_packet = compression_encoder(&raw_packet, threshold).await.unwrap(); } - buf = frame_prepender(buf).unwrap(); + raw_packet = frame_prepender(raw_packet).unwrap(); // if we were given a cipher, encrypt the packet if let Some(cipher) = cipher { - azalea_crypto::encrypt_packet(cipher, &mut buf); + azalea_crypto::encrypt_packet(cipher, &mut raw_packet); } - stream.write_all(&buf).await + stream.write_all(&raw_packet).await } |
