Return TypeFunction nameArguments
voidhzIpServer::ServeRequests(void)

Declared in file: hzIpServer.h
Defined in file : hzIpServer.cpp

Function Logic:

0:START 1:GetThreadLogger pLog pthread_mutex_lock items pthread_mutex_unlock 2:!m_bShutdown; 3:pthread_mutex_lock pthread_cond_wait 4:; 5:hzDiode::Pull pCC 6:!pCC 7:rc 8:rc 9:TCP_TERMINATE 10:hzIpConnex::Hypoxia hzDiode::Push pthread_cond_signal 11:TCP_KEEPALIVE 12:hzIpConnex::Oxygen hzDiode::Push pthread_cond_signal 13:TCP_INCOMPLETE 14:hzIpConnex::Oxygen hzIpConnex::EventNo hzIpConnex::CliSocket hzLogger::Log 15:pthread_mutex_unlock 16: No text

Function body:

void hzIpServer::ServeRequests (void)
{
   _hzfunc("hzIpServer::ServeRequests") ;
   hzPacket    tbuf ;
   hzIpConnex* pCC ;
   hzLogger*   pLog ;
   hzTcpCode   rc ;
   pLog = GetThreadLogger() ;
   pthread_mutex_lock(&s_request_mutex);
   s_nReqThreads++ ;
   pthread_mutex_unlock(&s_request_mutex);
   for (; !m_bShutdown ;)
   {
       pthread_mutex_lock(&s_request_mutex);
       pthread_cond_wait(&s_request_cond, &s_request_mutex);
       for (;;)
       {
           pCC = (hzIpConnex*) s_queRequests.Pull() ;
           if (!pCC)
               break ;
           rc = pCC->m_OnIngress(pCC->InputZone(), pCC) ;
           switch  (rc)
           {
           case TCP_TERMINATE:     pCC->Hypoxia() ;
                                   s_queResponses.Push(pCC) ;
                                   pthread_cond_signal(&s_response_cond) ;
                                   break ;
           case TCP_KEEPALIVE:     pCC->Oxygen() ;
                                   s_queResponses.Push(pCC) ;
                                   pthread_cond_signal(&s_response_cond) ;
                                   break ;
           case TCP_INCOMPLETE:    pCC->Oxygen() ;
                                   pLog->Log("Client %d (sock %d): Data incomplete\n", pCC->EventNo(), pCC->CliSocket()) ;
                                   break ;
           }
       }
       pthread_mutex_unlock(&s_request_mutex);
   }
}