-
Notifications
You must be signed in to change notification settings - Fork 0
20210221深化理解river node各个节点适配器的使用方式
zqy edited this page Feb 21, 2021
·
2 revisions
怎么说呢,有些类似Run()或者Start()方法
而对于river-node各个适配器的使用方式来说,是Raw<-[]byte{0x01,0x02,0x03,...}
对于各个不同的node,都拥有共同的父类node-river.go/RNodeAbstract,其拥有Init方法和Run方法
和这两个方法同样重要的是实现这个接口的各个底层结构体都拥有一个Raws管道,而上面所示的Raw<-xxx是和Init(),Run()同样重要的“方法”
而大部分node都会还拥有一个或多个(如CRC的PassNews和NotPassNews),他仅仅是作为一个附带的工序,严格来说其只是作为一个传统意义上,函数的返回值而已
重点来了,他应该被Run方法或Init方法生成才对!!!
已确认,他需要由Init()方法生成,因为Init()方法本身也会返回一个error的返回值,都堆一起挺好!!!!
但是又有个新问题,那就是Init只能返回一个error因为各个node都需要统一实现node-river.go/RNodeAbstract接口
唉,总之用config作为参数传入+反射的设计模式也挺好的,虽然各个News管道“看上去”和“书写形式上”不是返回值,但是从设计理念和设计思维上,他就是个妥妥的返回值,是各个node最终的产物
这和Signals与Errors是有着本质的区别的,Signals和Errors都是在主线程创造并使用的,不具备传递数据的特性,而具备汇总、分析、数据的特性
而各个node所最终创造的各个News则是在node线程创造而在主线程使用,具备被传递、被转化的特性