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
​​
 

Rocket - diplomacy - MixedNode的更多相关文章

  1. Rocket - diplomacy - DUEB参数模型的设计

    https://mp.weixin.qq.com/s/9PEEpe1pkQDN9RWpOGSUCQ   介绍DUEB参数模型的设计,不包含实现(实现对设计做了简化).     1. DUEB   di ...

  2. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  3. Rocket - diplomacy - LazyModule的实例化(补)

    https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  4. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  5. Rocket - diplomacy - LazyModule

    https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModu ...

  6. Rocket - diplomacy - resolveStar

    https://mp.weixin.qq.com/s/W1cS9sgwLFjOOm86d05NIA   介绍各类型节点如何确定星型绑定所包含的连接数.     1. 定义   ​​ resoveSta ...

  7. Rocket - diplomacy - ValName

    https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​ ...

  8. Rocket - diplomacy - Node相关类

    https://mp.weixin.qq.com/s/BvK3He3GWon8ywG8Jdmcsg   介绍Node相关的类.   ​​   1. BaseNode   BaseNode是所有节点类的 ...

  9. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

随机推荐

  1. Spring源码阅读 之 搭建源码阅读环境(IDEA)

    检出源码: GitHub:https://github.com/spring-projects/spring-framework.git 可以按如下步骤:(须确保Git已正确安装) Git正确安装后, ...

  2. Android下拉刷新SwipeRefreshLayout简单用法

    之前一直都想用下拉刷新,感觉上是庞大的工程,所以搁置了.现在学习了一下其实真的超级简单. 看了<第一行代码>以及 https://www.jianshu.com/p/3c402a9e4b7 ...

  3. Publishing and Deployment >> Publishing to IIS 翻译

    Publishing to IIS  发布到IIS 2017/1/18 18 min to read Contributors  Supported operating systems 支持的操作系统 ...

  4. 【Hadoop离线基础总结】Mac版VMware Fusion虚拟机磁盘挂载

    步骤概览 1.打开所要挂载磁盘的虚拟机的设置(此时必须关机) 2.打开硬盘设置 3.添加设备 4.选择新硬盘 5.设置如下图 6.将虚拟机开机,输入 df-lh ,查看当前虚拟机磁盘 7.输入 fdi ...

  5. 【MySQL基础总结】运算符的使用

    运算符的使用 算数运算符 比较运算符 结果只能为TRUE(1)或FALSE(0) 逻辑运算符 运算符的优先级 可以通过括号改变优先级 示例 算数运算符 比较运算符 逻辑运算符

  6. Flutter为什么使用Dart?

    老孟导读:关于Flutter为什么使用Dart?这个话题,就像PHP是世界上最好的语言一样,争论从来没有停止过,有很多说法,比如: Google是为了推广Dart,Dart是亲儿子. Flutter团 ...

  7. HMM-前向后向算法与实现

    目录 基本要素 HMM三大问题 概率计算问题 前向算法 后向算法 前向-后向算法 基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,.. ...

  8. Python 简明教程 --- 2,第一个Python 程序

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那你肯定是用错方法了. -- Carig Zerouni 当你在自己的电脑上 ...

  9. 最短路径——floyd算法代码(c语言)

    最短路径问题 昨天自己试了试写一下dijkstra的算法博客 dijkstra链接在这← 今天来更floyd算法,感觉非常简单果然暴力才是解决一切的王道 一.总体思想 floyd算法就是每一次从邻接矩 ...

  10. vue与其他框架对比

    https://cn.vuejs.org/v2/guide/comparison.html 1. vue 框架的特点? MVVM框架模式 轻量级,灵活,容易上手 数据驱动 组件化(单文件组件) 插件化 ...