live555 任务调度处理函数使用
来源:互联网 发布:数据分发服务器 编辑:程序博客网 时间:2024/05/22 12:54
<pre name="code" class="html">
</pre>live555 任务调度 采用几个函数进行设置
void setBackgroundHandling(int socketNum, int conditionSet ,BackgroundHandlerProc* handlerProc, void* clientData)
以RTSP 连接处理为例
RTSPServer::RTSPClientConnection::RTSPClientConnection(RTSPServer& ourServer, int clientSocket, struct sockaddr_in clientAddr) : fOurServer(ourServer), fIsActive(True), fClientInputSocket(clientSocket), fClientOutputSocket(clientSocket), fClientAddr(clientAddr), fRecursionCount(0), fOurSessionCookie(NULL) { // Add ourself to our 'client connections' table: fOurServer.fClientConnections->Add((char const*)this, this); // Arrange to handle incoming requests: resetRequestBuffer(); envir().taskScheduler().setBackgroundHandling(fClientInputSocket, SOCKET_READABLE|SOCKET_EXCEPTION,(TaskScheduler::BackgroundHandlerProc*)&incomingRequestHandler, this);}
析构函数中 关闭socket 需要移除处理函数
void RTSPServer::RTSPClientConnection::closeSockets() { // Turn off background handling on our input socket (and output socket, if different); then close it (or them): if (fClientOutputSocket != fClientInputSocket) { envir().taskScheduler().disableBackgroundHandling(fClientOutputSocket); ::closeSocket(fClientOutputSocket); } envir().taskScheduler().disableBackgroundHandling(fClientInputSocket); ::closeSocket(fClientInputSocket); fClientInputSocket = fClientOutputSocket = -1;}
添加延迟任务:
TaskToken scheduleDelayedTask(int64_t microseconds, TaskFunc* proc,void* clientData)
在我的RTSP客户端中使用的示例:
void CloseClientFun(void *data){ RTSPClient* pClient=(RTSPClient*)data;shutdownStream(pClient,0);}int CStreamItem::Close(){if (m_pRtspClient){m_pRtspClient->m_lpStreamCallBack=NULL;m_pRtspClient->m_pUserData=NULL;theApp.g_scheduler->scheduleDelayedTask(1, CloseClientFun, m_pRtspClient);m_pRtspClient=NULL;}return 0;}
0 0
- live555 任务调度处理函数使用
- live555任务调度学习
- crontab任务调度使用
- 使用Quartz调度任务
- LTS任务调度使用
- 定时任务进程调度处理
- spring任务调度的使用
- 任务调度的使用crontab
- Quartz任务调度基本使用
- 使用 Timer 进行任务调度
- Quartz任务调度基本使用
- Quartz任务调度基本使用
- 使用Azkaban调度Spark任务
- Quartz任务调度基本使用
- 使用azkaban调度spark任务
- spring boot使用任务调度
- 使用quartz进行任务调度
- 使用Quartz实现任务调度
- mysql更改权限
- Linux下strace命令
- [FAQ08566] 如何修改默认的searchable items.
- jconsole 无法查看本地进程
- c#FileStream文件读写
- live555 任务调度处理函数使用
- Android adb setuid提权漏洞之分析
- Java实现文本文件按条件过滤的简便方法
- 产品需求文档的写作(三) – 原型设计(手绘原型,灰模原型,交互原型)
- java中的值传递和引用传递
- Eclipse 3.7.2 下载 汉化
- 码农最喜欢的Eclipse 保护眼睛的颜色设置方法
- android DexClassLoader动态加载技术详解
- Cocos2d-X 学习笔记 12 CCTableView使用