live555 任务调度处理函数使用

<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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值