Rocket

https://mp.weixin.qq.com/s/zgeAI2n-2cHJi7-Ra5rYZA

 
介绍MixedNode的实现。
 
 
1. 类定义
 
 
2. inner/outer
 
inner side/outer side of the node.
 
3. inward/outward
 
Inward/Outward node:
 
4. resolveStar
 
抽象方法,实现如下逻辑:确定绑定中的星号(*)所代表的连接的个数。
根据Star所代表的连接个数,每个绑定在resolveStar之后,可以包含多条连接。
 
5. mapParamsD/mapParamsU
 
实现如何把DI映射为DO,把UO映射为UI。
 
6. iBindings/oBindings
 
iBindings/oBindings分别定义于InwardNode和OutwardNode中,通过iPush和oPush向其中添加绑定信息:对端节点、绑定类型。
 
iPush/oPush在bind()方法中调用:
 
绑定是成对的:
a. x的内向连接就是y的外向连接;
b. x侧的BIND_STAR是y侧的BIND_QUERY;
 
总结一下:
a. 我的STAR,你的QUERY;
b. 你的STAR,我的QUERY;
 
 
7. sinkCard/sourceCard/flexes
 
sinkCard:当前节点的所有连接中,下游节点为星号(*)的连接的个数;
sourceCard:当前节点的所有连接中,下游节点为星号(*)的连接的个数;
flexes:当前节点的所有连接中,连接类型为BIND_FLEX的连接中的对端节点;
 
8. flexOffset
 
用于确定多对多的连接,是作为一对多的连接使用,还是作为多对一的连接使用。
 
如注释所说:
 
可以重构为如下两个变量以供后续使用:
 
 
9. oPortMapping/iPortMapping
 
oPortMapping:输出绑定包含的连接序号区间:[start, end);
iPortMapping:输入绑定包含的连接序号区间:[start, end)
 
 
 
10. oStar/iStar
 
oStar: 输出侧的Star,resolve之后所包含的连接数;
iStar:输入侧的Star,resolve之后所包含的连接数;
 
11. oPorts/iPorts
 
 
输出侧和输入侧所有连接的集合。每个连接包含如下信息:
a. j: 连接的序号;
b. n: 对端节点;
c. p:参数Parameters;
d. s: sourceInfo;
 
PS. i为绑定的序号。
 
12. diParams/doParams
 
diParams:所有输入连接的DI参数的集合,也就是上游节点对应的doParams(i),即DI定义中的received的意思;
doParams:所有输出连接DO参数的集合,使用diParams和mapParamsD方法产生,即DO定义中的generated的意思;
 
doParams依赖于本节点的diParams,diParams依赖于上游节点的doParams...,如此逐级向上,实现Params向下(Downward)传播。
 
13. uoParams/uiParams
 
参考diParams/doParams;
 
14. edgesOut/edgesIn
 
edgesOut:使用outer和UO参数,获得输出边;
edgesIn:使用inner和DI参数,获得输入边;
 
15. bundleOut/bundleIn
 
输出连接Bundle的集合;
输入连接Bundle的集合;
 
16. danglesOut/danglesIn
 
输入输出悬边的集合。
所谓悬,是指没有和对端连接到一起;这里的连接指的是Bundle的连接。
所谓边,指的是连接,而非绑定。所以我侧用的是连接编号i;
 
其中:
a. serial是每一个节点唯一的编号;
b. i是连接的序号;
c. j是绑定的序号;(每个绑定可以包含多条连接,取决于Star resolve之后的值)
d. flipped的值代表输入边和输出边,用于确定bundle的方向是否需要反转;
 
 
17. out/in
 
如注释:Accessors to the result of negotiation to be used in LazyModuleImp.
 
18. instantiate/finishInstantiate
 
实例化,返回所有悬边的集合,输入输出不重要:Used by LazyModules.module.instantiate
 
19. inputs/outputs
 
meta-data for printing the node graph
 
原文地址:https://www.cnblogs.com/wjcdx/p/10473391.html