码迷,mamicode.com
首页 > 其他好文 > 详细

Rocket - tilelink - Filter

时间:2019-08-13 20:23:49      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:blank   提示   bfc   ini   doc   href   集合   b2b   ace   

https://mp.weixin.qq.com/s/6XX0CZHoDotIgLbNDSIUog

 
简单介绍Filter的实现。
 
?技术图片?
 
1. 基本介绍
 
使用过滤器过滤掉client和manager的一部分能力。
 
2. ManagerFilter/ClientFilter
 
用于对manager和client进行过滤:
?技术图片?
a. 若过滤掉则返回None;
b. 若没过滤掉,也可能进行更改;
 
3. mIdentity/cIdentity
 
不产生任何变化的过滤器:
?技术图片?
 
4. diplomacy node
 
1) TLAdapterNode
 
是一个适配器节点。
 
2) clientFn
 
把本节点看到的client参数,映射为下游节点看到的client参数:
?技术图片?
a. 把client都经过过滤器处理一遍;
b. 确保过滤器过滤掉一部分能力:
?技术图片?
这里IDEA提示把out.map换为out.foreach比较好。
 
看最后一个:require(!c.requestFifo || o.requestFifo)
从中可以看出:不需要fifo比需要fifo能力强。不需要fifo说明client具备请求序列化的能力,需要fifo则client自身不具备,需要manager使用fifo来为之实现。
a. 若c.requestFifo=false,表明c不需要fifo,那么无论o需不需要fifo都不超过c的能力;
b. 若c.requestFifo=true, 则o.requestFifo=true,即如果c不具备序列化的能力,那么o也不能具备;
 
3) managerFn
 
把本节点看到的manager参数,映射为上游节点看到的manager参数:
?技术图片?
a. 把manager都经过过滤器处理一遍;
b. 确保过滤器过滤掉一部分能力:
?技术图片?
 
也看最后一个:require(o.fifoId.isEmpty || m.fifoId == o.fifoId)
从中可以看出:具有fifoId的能力要强于没有fifoId。原因在于,有fifoId则内部实现了针对该fifoId的序列化功能。
 
5. lazy module
 
用于实现内部逻辑。
 
?技术图片?
 
1) 成对出现的输入边和输出边
 
?技术图片?
 
2) 输入边和输出边直连即可
 
?技术图片?
由此可以看出Filter的功能,主要通过diplomacy node实现。
 
3) 若不支持Acquire操作,则默认关闭channel b/c/e:
 
?技术图片?
 
6. object TLFilter
 
其中定义了一些过滤器实例。
 
1) mIdentity/cIdentity
 
不做改变:
?技术图片?
 
2) mSelectIntersect
 
这是一个manager过滤器:
?技术图片?
把manager中的地址集合与参数select求交集,并调整transfer的能力。
 
3) mHideContained
 
?技术图片?
 
重构一下:
?技术图片?
只保留没有被container完全包含的地址集合。
 
4) mHideCacheable
 
去除支持Cache的manager:
?技术图片?
 
5) mSelectCacheable
 
去除不支持Cache的manager:
?技术图片?
 
6) mMaskCacheable
 
去除支持cache的manager的cache能力:
?技术图片?
 
7) mSelectAndMaskCacheable
 
?技术图片?
a. 去除支持cache的manager的cache能力;
b. 去除不支持cache的manager;
 
8) cHideCaching
 
去除支持cache的client:
?技术图片?
 
9) cSelectCaching
 
选择支持cache的client:
?技术图片?
 
 
 
 

Rocket - tilelink - Filter

标签:blank   提示   bfc   ini   doc   href   集合   b2b   ace   

原文地址:https://www.cnblogs.com/wjcdx/p/11348161.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!