aboutsummaryrefslogtreecommitdiff
path: root/azalea-protocol/src/write.rs
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2023-09-21 11:16:29 -0500
committerGitHub <noreply@github.com>2023-09-21 11:16:29 -0500
commit7b3e2e4bf793466a351510c7fbbd08234e93bb0e (patch)
tree7177a919de9982d9e3c7f36a76d2025696f465b6 /azalea-protocol/src/write.rs
parent83cce236145cdab1872a472a70943b669a880965 (diff)
downloadazalea-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-xazalea-protocol/src/write.rs26
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
}