20210225关于river node适配器的events - ziyouzy/2021blog GitHub Wiki

适配器的意义在于反馈event(signals与error)以及生成新News管道,这对于数据源类型的适配器来说同样如此,两者都是存在的意义,而且必要时可以没有News(如心跳包),也不能没有Signals,或者说,各个适配器的Uid的首要任务是在向上层发送events时,确保各个适配器在整体系统中唯一的识别性

这让我此刻联想到了之后会去设计的那些会包含多个river-node的复杂数据结构,如,用来处理某个Net.conn所发来的数据,让其转换成要给physicalnode:

大概会是这样的结构:
type zconn struct{
    con            net.Conn

    //signals      Singals
    //errors       Errors 
    hbraw          chan struct{}
    HB             NodeAbstract

    crcRaws        chan []byte
    crcPassNews    chan []byte
    crcNotPassNews chan []byte
    CRC            NodeAbstract

    stampRaws      chan []byte
    stampNews      chan []byte
    Stamps NodeAbstract
}

or

type zconn struct{
    con    net.Conn
    rivernodes [3]NodeAbstractFunc

    //以及相关管道
}

zconn结构自身并不会存在Uid,而可能会存在处理各个event的函数
或者说,zconn的本质其实就是当前所用做测试所设计的package testpkg,他未必会存在uid,但是会存在event.go

之前我所担心的connect.go文件内独立的函数,在之后的实战中,都会先将“node”组装成“river”的结构类,独立的函数都会编程这个结构类自身的方法