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