mfavant / tubekit

NEW PROJECT https://github.com/crust-hub/avant
MIT License
0 stars 0 forks source link

feat:broadcast design #9

Closed gaowanlu closed 5 months ago

gaowanlu commented 9 months ago

可以在stream connection中再设计一个发送buffer,用户存储需要主动发送的协议包,send_buffer只允许一个协议包存在 (或者存在多个协议包,每个协议包必须是完整的),并且需要用一个标识位来标识是否允许从待发送协议包移动到 send_buffer,只有当sendbuffer内容全部发送时,才会将sendbuffer改为允许写。当允许内容加入sendbuffer时, 这些协议包会 将加入到send buffer(设计一个回调机制),然后将主动发送的协议包 从临时的buffer中全部加入到send buffer中,保证了, 协议之间不会被打断 出现协议交叉的问题。待发送协议包buffer的写必须只有两种结果(将要发送的协议全部加入到buffer或者 要发送的内容没写到buffer)。

怎么设计如大文件上传下载这种功能,自行设计文件传输协议吧,分片之类的,毕竟 协议包做到空间大小 不受限制 这种确实很受限,无论框架层还是应用业务层,都是一个灾难。除非不是长连接,在http_task中设计了回调机制,支持大文件像客户端响应下发,但是对于大型文件的上传对于http而言,其实也是尽可能设计为分片上传,不然框架层需要设计机制,在服务器接收到http请求报文,能读到body内容时,进行相应handler触发接收body,这样就不用当全部body内容接收后再做处理(但是这样简直费力不讨好,不如将问题留给业务层解决,TODO:对于上传body的大小肯定是要有限制机制的)。

gaowanlu commented 9 months ago

广播设计到,上层应用比较好,现在已经能进行 用connection layer send了