分类: LINUX
2013-07-05 18:10:02
2、boa中的request连接为短链接,每来一个请求就建立一个request连接,请求执行完之后释放该request结构体,该request链表无优先级的限制,只会轮询执行request请求,判断request是否释放的标志是retval变量,那么为什么客户端连接后只是发送一个
/ipcam/avc.cgi HTTP/1.1请求,可以获取连续的视频流,可以看到通过哈希表查找到其执行函数只是获取了一个I帧数据,这是确保获取第一帧图像时不花屏,之后没有操作了,那连续获取视频流的操作在哪里呢?这还要通过boa解析request流程来分析,boa在解析request_header,request_body之后还要将结构返回给client socket,该部分在函数process_get中实现,在该函数中一般的控制request将返回值正确写到client socket后返回 req->status = DEAD;return 0;而视频请求则通过http_stream判断请求流类型,之后调用GetAVData来获得一帧数据,并返回return 1,说明该连接请求并没有结束,boa继续轮询该request,从而获得连续的视频流。知道客户端退出时,该视频请求request才释放。
3、GetAVData接口中几个宏定义的含义: