MCPcopy Create free account
hub / github.com/KangLin/RabbitRemoteControl / OnProcess

Method OnProcess

Plugins/LibVNCServer/Client/BackendLibVNCServer.cpp:306–361  ·  view source on GitHub ↗

! * \~chinese 插件连接的具体操作处理。因为此插件是非Qt事件,所以在此函数中等待。 * * \~english Specific operation processing of plug-in connection. * Because of it is a non-Qt event loop, so wait in here. * * \~ * \return * \li >= 0: continue, Interval call time (msec) * \li = -1: stop * \li < -1: error * \see CConnect::Connect() CConnect::slotTimeOut() */

Source from the content-addressed store, hash-verified

304 * \see CConnect::Connect() CConnect::slotTimeOut()
305 */
306int CBackendLibVNCServer::OnProcess()
307{
308 //qDebug(log) << Q_FUNC_INFO;
309 int nRet = 0;
310 if(!m_pClient)
311 {
312 // Stop
313 return -1;
314 }
315
316 struct timeval timeout = {0, DEFAULT_TIMEOUT};
317 fd_set set;
318 FD_ZERO(&set);
319 if(RFB_INVALID_SOCKET != m_pClient->sock)
320 {
321 FD_SET(m_pClient->sock, &set);
322 }
323 rfbSocket eventFd = m_Event.GetFd();
324 if(RFB_INVALID_SOCKET != eventFd)
325 {
326 FD_SET(eventFd, &set);
327 }
328 rfbSocket fd = RFB_INVALID_SOCKET;
329 fd = std::max(eventFd, m_pClient->sock);
330 //qDebug(log) << "fd:" << fd << "select m_pClient->sock:" << (int)m_pClient->sock << "event:" << eventFd;
331 nRet = select(fd + 1, &set, NULL, NULL, &timeout);
332 //qDebug(log) << "select end";
333 if (nRet < 0) {
334 qCritical(log) << "select fail:" << nRet << "errno" << errno << strerror(errno);
335 return nRet;
336 }
337
338 /*if(0 == nRet)
339 {
340 //qDebug(log) << "Time out";
341 return 0;
342 }//*/
343
344 if(RFB_INVALID_SOCKET != eventFd && FD_ISSET(eventFd, &set))
345 {
346 //qDebug(log) << "fires event";
347 m_Event.Reset();
348 }
349
350 if(RFB_INVALID_SOCKET != m_pClient->sock
351 && FD_ISSET(m_pClient->sock, &set)) {
352 //qDebug(log) << "HandleRFBServerMessage";
353 if(!HandleRFBServerMessage(m_pClient))
354 {
355 qCritical(log) << "HandleRFBServerMessage fail";
356 return -2;
357 }
358 }
359
360 return 0;
361}
362
363int CBackendLibVNCServer::WakeUp()

Callers

nothing calls this directly

Calls 2

GetFdMethod · 0.80
ResetMethod · 0.80

Tested by

no test coverage detected