https://mp.weixin.qq.com/s/pc8f_DOJ7w8k8BeM9gPzVw
简单介绍Delayer的实现。
1. 基本介绍
以一定的概率延迟消息的传递。
类参数 q is the probability to delay a request:
取值范围在[0, 1):
2. diplomacy node
Delayer的diplomacy node就是一个简单的AdapterNode,没有对经过他的参数做修改:
3. lazy module
lazy module实现内部逻辑,把输入边与输出边连接到一起。
1) 成对的输入边和输出边
2) anoise
输入到channel a的噪声:
其中:LFSRNoiseMaker用于产生固定宽度的随机输出;
3) bnoise
输入到channel b的噪声:
4) cnoise
输入到channel c的噪声:
5) dnoise
输入到channel d的噪声:
6) enoise
输入到channel e的噪声:
7) feed a/b/c/d/e
把噪声和上游消息feed到下游:
8) feed
用于把source和noise,喂到sink中:
其中:
a. q是一个概率值,这个值越大,q * 65535 <= random_16的可能性越小,即allow的概率越小,也就是延迟的概率越大;
b. sink.valid为假时,向sink.bits喂入noise。但此时sink.valid为假,所以sink并不会从sink.bits中读取消息;也就是说noise并不会被使用;
4. object Delayer
用于简化Delayer的创建:
5. 附录
略