2个版本
| 0.1.2 | 2024年3月1日 |
|---|---|
| 0.1.1 | 2024年2月29日 |
#27 in #async-networking
12KB
147 行
schmoozer
对可重试异步操作的一种简单抽象,例如建立TCP连接。
lib.rs:
schmoozer旨在用作一个异步(重连)连接器。它由两部分组成
- 由需要运行可重试连接循环的应用程序/库实现的
Connector特性。 - [
run()] 是一个函数,它接受一个Connector实现并尝试建立连接,在回调报告为可重试的失败时延迟并重试,并在成功建立连接后调用 [Connector::run()] 特性方法。
可能看似矛盾的是, [run()] 函数本身并不实际尝试建立任何连接 -- 它依赖于 Connector 特性来实现建立连接的方法。
连接器循环的整体“正确路径”流程是调用 connect() 方法。如果成功,调用 run() 方法,并传递新的连接。与连接相关的主要应用程序逻辑应从该方法调用。
连接器的主要目的是“失败路径”:如果 connect() 方法遇到失败,它可以选择向连接器循环发出信号,表明错误是“可重试的”,在这种情况下,将调用 retry_delay() 方法以确定连接器循环是否应该重试(并在返回执行重试指令之前实现延迟)。
同样,run() 方法返回其 Result<(), Self::Error> 被包装在 ControlFlow::Continue(_) 中,以表示连接器应该重新连接,而 ControlFlow::Break(_) 则表示发生了致命错误,连接循环应该终止。
依赖项
~0.3–8.5MB
~69K SLoC