Skip to content

Commit d826dda

Browse files
try brotli
1 parent 036c841 commit d826dda

File tree

4 files changed

+47
-61
lines changed

4 files changed

+47
-61
lines changed

Cargo.lock

+37-50
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ rust-version = "1.63"
1414
[dependencies]
1515
abao = { version = "0.2.0", features = ["group_size_16k", "tokio_io"], default-features = false }
1616
anyhow = { version = "1", features = ["backtrace"] }
17-
async-compression = { version = "0.3.15", features = ["tokio", "zstd"] }
17+
async-compression = { version = "0.3.15", features = ["tokio", "brotli"] }
1818
base64 = "0.21.0"
1919
blake3 = "1.3.3"
2020
bytes = "1"

src/get.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ impl Stats {
106106
pub struct DataStream(AsyncSliceDecoder<RecvStream>);
107107

108108
type RecvStream =
109-
async_compression::tokio::bufread::ZstdDecoder<tokio::io::BufReader<quinn::RecvStream>>;
109+
async_compression::tokio::bufread::BrotliDecoder<tokio::io::BufReader<quinn::RecvStream>>;
110110

111111
impl DataStream {
112112
fn new(inner: RecvStream, hash: Hash) -> Self {
@@ -284,7 +284,7 @@ async fn handle_blob_response(
284284
assert!(buffer.is_empty());
285285
// Decompress data
286286
let decompress_reader =
287-
async_compression::tokio::bufread::ZstdDecoder::new(reader);
287+
async_compression::tokio::bufread::BrotliDecoder::new(reader);
288288
let decoder = DataStream::new(decompress_reader, hash);
289289
Ok(decoder)
290290
}

src/provider/mod.rs

+7-8
Original file line numberDiff line numberDiff line change
@@ -838,14 +838,10 @@ async fn send_blob<W: AsyncWrite + Unpin + Send + 'static>(
838838
// taking a reference does not work. spawn_blocking requires
839839
// 'static lifetime.
840840

841-
writer = tokio::task::spawn_blocking(move || {
842-
// Compress data
843-
let mut compressed_writer =
844-
async_compression::tokio::write::ZstdEncoder::with_quality(
845-
writer,
846-
async_compression::Level::Fastest,
847-
);
841+
// Compress data
842+
let mut compressed_writer = async_compression::tokio::write::BrotliEncoder::new(writer);
848843

844+
compressed_writer = tokio::task::spawn_blocking(move || {
849845
let file_reader = std::fs::File::open(&path)?;
850846
let outboard_reader = std::io::Cursor::new(outboard);
851847
let mut wrapper = SyncIoBridge::new(&mut compressed_writer);
@@ -856,10 +852,13 @@ async fn send_blob<W: AsyncWrite + Unpin + Send + 'static>(
856852
size,
857853
);
858854
let _copied = std::io::copy(&mut slice_extractor, &mut wrapper)?;
859-
std::io::Result::Ok(compressed_writer.into_inner())
855+
std::io::Result::Ok(compressed_writer)
860856
})
861857
.await??;
862858

859+
compressed_writer.flush().await?;
860+
let writer = compressed_writer.into_inner();
861+
863862
Ok((SentStatus::Sent, writer, size))
864863
}
865864
_ => {

0 commit comments

Comments
 (0)