我们有一个实现多种网络协议的库。从高层次的角度来看,我们通过将每个协议实现为独立且独立的模块来构建架构。每个模块只需知道相邻的下层暴露基元以发送数据,而相邻的上层暴露基元以接收数据。以这种方式,用户根据需要组装最终堆栈。 现在的问题是:
我有两种选择来在层之间传递数据:
1)作为流:由一个层传递给相邻的数据的数据将被消费,由消费者层释放。结果就像生产者/消费者的问题。生产者通过推送数据来分配动态内存,消费者通过消费数据来释放内存。
2)作为普通缓冲区或缓冲区数组:当使用者层重新引用时,数据不会被释放。如果使用动态内存,则是dealloc mem的生产者职责。
您认为这是最佳解决方案吗?考虑到一个层通常必须在将数据传递给上层数据之前累积数据,直到完整的pdu(数据包或帧)没有从较低的数据库中重新获得。
欢呼声 的Davide