Skip to content

20210422关于Event在整个程序中的地位,重点探讨他和哪个组件的地位一致

zqy edited this page Apr 22, 2021 · 1 revision

首先想到的是Events,Errors是与某一个net.Conn的地位是一致的
后期有可能会再去设计一个ModbusBox(可以是切片,也可以是管道,其实net.Conn的读取方式更和net.Conn相似) 他们都是最初的“数据源头”
而他们与诸如fromuserio808_Chs内的管道,toflutter_Chs内的管道地位上是完全不同的,这样的管道由river生成,作用只局限于实现river与river之间的数据连接


现在深化思考为什么会出现之前无法实现诸如“识别conn关闭信号从而析构river”问题
首要原因还是在于之前Rivers与Conns都存在于某个river内部,而不是全局的,现在已经将他们重构成了全局变量(存在于river.go中)
但是依然存在一个逻辑上的问题,那就是某个river去控制属于自己的全局Chs是合理的,但是不该去控制别的river的全局Chs
除了自己之外,应该只有他们的上层才有资格调度/处理所有river的Chs
同理,任何river都不该去控制Rivers与Conns,因为他们是属于“上层的组件”,而上层其实正是server层


思路一下就清晰了:
Events、Errors、
各个原始net.Conn(通过listener拿到的原始net.Conn)、
ModebusBox、
各个在运行逻辑的某个环节所创建出的River
这些都是Server层的组件,River层无权管理他们,而各个chs虽然确实是属于Server层的但是他们并不server层,river应该设计成独立的包
接下来的任务就是这个,把river设计成独立的包,同时不再用from区分,而是用read/write或send/recv来在名称上区分他们

Clone this wiki locally