卡皮巴拉设计
感觉有点顶不住了,感觉安装了个Fira Code和GitHub Light主题。
首先将接口的层级提升到「peer」,也就是掌管多条连接的网络栈全局对象。就像现有的代码在TCP peer中添加了一个TCPMig peer一样,我也在TCPMig peer中再添加一个user connection peer。
与基于peer抽象的接口交互可以采取无状态的方式。有需要就当场调用peer提供的钩子,实在有必要就找peer要个ID来索引。目前来看需要三个钩子:推送迁入数据,询问迁出数据大小,宣布迁出(并提供缓存区填写数据)。对于TCPMig peer来说最趁手的索引是远端套接字地址(即IP+端口二元组),如果Redis不喜欢以后再改。
反向FFI调用实在没想到什么好的静态方案,就还是让应用层动态注册一下吧。应用层在启动时注册上述三个钩子的函数指针,至于用户数据就留在C的一侧写作全局变量罢了。
别的方向不清楚,起码这下跟我接手之前的接口是大不相同了。我当然不会为了有所不同而搞不同,但是把它视作一个好处应该不是不行。
本文由作者按照 CC BY 4.0 进行授权