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的更多相关文章

  1. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  2. Rocket - tilelink - Xbar

    https://mp.weixin.qq.com/s/UXFHYEQaYotWNEhshro68Q   简单介绍Xbar的实现.   ​​   1. 基本介绍   用于为Xbar的输入和输出连接生成内 ...

  3. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  4. Rocket - tilelink - AsyncCrossing

    https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg   介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...

  5. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  6. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  7. Rocket - tilelink - Bundles

    https://mp.weixin.qq.com/s/jrqBg2AIpQogBrpwNXjmwg   简单介绍Bundles文件中对TileLink规范(1.7.1)的定义. 参考链接:https: ...

  8. Rocket - tilelink - TLBusWrapper.to

    https://mp.weixin.qq.com/s/jSnhBzU5_ayQCg5fWAcx-g 简单介绍TLBusWrapper.to()的实现.主要介绍确定this{...}对应代码的过程. 1 ...

  9. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

随机推荐

  1. linux解压缩tar.gz文件

    1.解压缩命令 命令:tar -zxvf 文件名 -z 有gzip属性的 -x 解压 -v 显示所有过程 -f 要处理的文件名 2.压缩命令 命令: tar -zcxf 压缩后的文件名 要压缩的文件名 ...

  2. mongodb windows 集群搭建

    准备三台机器,系统:windows 8 192.168.1.1 192.168.1.2 192.168.1.3 每台机器上安装mongodb 服务,步骤: 下载以下文件并依次执行安装 clearcom ...

  3. 设计模式之GOF23解释器模式

    解释器模式Interpreter -是一种不常用的设计模式 -用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计 -当我们需要开发一种新的语言时,可以考虑使用解释器 ...

  4. hive数据仓库入门到实战及面试

    第一章.hive入门 一.hive入门手册 1.什么是数据仓库 1.1数据仓库概念 对历史数据变化的统计,从而支撑企业的决策.比如:某个商品最近一个月的销量,预判下个月应该销售多少,从而补充多少货源. ...

  5. Spring全家桶之spring boot(三)

    spring boot集成mybatis 众所周知,spring与springmvc可以无缝集成,而mybatis不是spring旗下的框架,因此需要进行配置,当然,这里的配置也是非常简单的. 1.首 ...

  6. ES6新增API

    1.Object.assign(a,b,c) a.b均为对象,意思是把b对象的属性添加到a上面去.如果a中已经定义了某个属性,b也定义了的话就会覆盖a的,就是后面覆盖前面的,后面生命的有效.是 一种浅 ...

  7. post请求导出表单。

    postExcelFile(params, url) { //params是post请求需要的参数,url是请求url地址 var form = document.createElement(&quo ...

  8. Antd 表格数据分页展示

    分页组件代码 render(){ const {total,size,currenPage} = this.state // 参数分别为数据总条数.每页数据条数.当前页页码 return ( // 渲 ...

  9. clickhouse入门到实战及面试

    第一章. clickhouse入门 一.ClickHouse介绍 ClickHouse(开源)是一个面向列的数据库管理系统(DBMS),用于在线分析处理查询(OLAP). 关键词:开源.面向列.联机分 ...

  10. ABAP基础2:数据类型

    数据类型-Data Type:定义程序中可以使用的数据类型,使用前要先定义 数据变量-Data Variable:参照数据类型定义的.可以存储值的变量,就是变量嘛 数据类型 数据类型在ABAP程序中用 ...