NFDC添加缓存队列
main函数的基本流程:每个节点创建一个socket套接字(server_sock)用作监听,epoll用于检测文件描述符。每当检测到监听描述符就会通过unix_stream_face_create新建一个face。当检测到其他的描述符时说明需要通信了。会通过刚刚创建的face的face_recv为本地节点接收数据,存到recv_msg中,recv_msg包括face,起始的buf地址,数据的大小。然后调用线程中的handle_msg对recv_msg进行处理,进一步判断收到的包的类型,如何转发等(后面的on_incoming_xxx)。
起始的interest是通过app_face的express_interest发出来的,比如ping工具。
添加队列的思路:
新建一个结构体content_t,content_t包括face和enc,content类型作为队列存储的类型,用于后面的发送。
1 | struct content_t |
添加一个新的.c文件,或者直接用标准库的queue或者deque
1 |
|
对send_interest进行修改原来是直接通过接口发送,现在是将数据发送到队列中
1 | //原来的版本 |
系统调用write的作用是把缓冲区buf里的前nbytes字节写入与文件描述符相关联的文件中去。它的返回值是实际写出的字节数。
1 | //新的版本 |
1 | void queueInterestTest(RQueue<content_t> queueInterest) { |
1 | void queueDataTest(RQueue<content_t> queueInterest) { |
具体实现:
- 在main函数中新建两个队列并修改接口
1 | //新增 |
- 修改forwarder和mgmt里面对应的接口
1 | //mgmt |
- 对face进行修改
1 | //send_interest函数 |
队列的具体实现:
1 |
|
1 | //queue.c |