Calculate number of request server thread as this will serve as the divisor Arguments: None Returns: None

Return TypeFunction nameArguments
voidhzIpServer::ServeRequests(void)

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

Function Logic:

0:START 1:pLog items items items 2:unknown 3:items items 4:unknown 5:pCC 6:unknown 7:rc 8:rc 9:TCP_TERMINATE 10:items items items 11:TCP_KEEPALIVE 12:items items items 13:TCP_INCOMPLETE 14:items items 15:items 16: No text

Function body:

void hzIpServer::ServeRequests (void)
{
   //  Calculate number of request server thread as this will serve as the divisor
   //  
   //  Arguments: None
   //  Returns: None
   _hzfunc("hzIpServer::ServeRequests") ;
   hzPacket    tbuf ;      //  Fixed buffer for single IP packet
   hzIpConnex* pCC ;       //  Connected client
   hzLogger*   pLog ;      //  Separate logger
   hzTcpCode   rc ;        //  Return code from event handler
   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 ;
           //  Handle the request
           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);
   }
}