【发布时间】:2018-11-21 13:17:12
【问题描述】:
我在 Rust / Tokio 堆栈中有一个 TCP 文件服务器。
当客户端上传文件时,数据将从tokio::net::TcpStream 读取并写入futures_fs::FsWriteSink,该futures_fs::FsWriteSink 已在单独的futures_fs::FsPool 上启动。
文件完全上传后,我需要通过与客户端发送的校验和检查其一致性。
异步计算校验和的最简单方法是什么,尤其是在文件不适合 RAM 的情况下?
【问题讨论】:
-
使用
BufReader? -
您可能还想探索在上传时计算实际上传数据的校验和。此时您已经有数据通过您的处理,因此计算校验和几乎是一项免费操作。如果您有性能方面的考虑,则尤其如此,因为通过在将数据保存到磁盘后计算数据的校验和,您实际上将支持文件上传所需执行的 IO 操作加倍。
-
是的,我完全同意。但似乎我需要自己实现这样的事情,不是吗?我想要另一个
Sink之类的东西,我可以在其中提供块,以便Sink可以即时计算校验和。 -
什么校验和?校验和的实现自然是异步的吗?如果是这样,只需使用它。如果不是,那么这是 What is the best approach to encapsulate blocking I/O in future-rs? 的副本。
标签: file asynchronous rust checksum rust-tokio