Reads one or more packets from the socket into the supplied chain until a zero length read occurs.

Return TypeFunction nameArguments
hzEcodehzUdpClient::RecvChain(hzChain&,)

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

Function Logic:

0:START 1:items 2:unknown 3:items 4:Return E_NOSOCKET 5:unknown 6:items m_nSock items 7:Return E_RECVFAIL 8:items 9:unknown 10:nRecv 11:unknown 12:items m_nSock items 13:Return E_RECVFAIL 14:unknown 15:items 16:Return E_OK

Function body:

hzEcode hzUdpClient::RecvChain (hzChain& C)
{
   //  Reads one or more packets from the socket into the supplied chain until a zero length read occurs.
   //  
   //  Argument: C The chain to populate
   //  
   //  Returns: E_NOSOCKET If the connection has been closed
   //     E_RECVFAIL If the socket read operation fails
   //     E_OK  If operation successfull
   _hzfunc("hzUdpClient::Recv(hzChain&)") ;
   uint32_t    nRecv ;     //  Bytes recieved in IP packet
   //  CHECK
   C.Clear() ;
   if (m_nSock == 0)
   {
       hzerr(E_NOSOCKET, "Client has no connection") ;
       return E_NOSOCKET ;
   }
   if ((nRecv = recvfrom(m_nSock, m_pack.m_data, HZ_MAXPACKET, 0,(struct sockaddr*) &m_SvrAddr, &m_SvrLen)) < 0)
   {
       close(m_nSock) ;
       m_nSock = 0;
       hzerr(E_RECVFAIL, "Could not recv from server (%s) on port %d", *m_Hostname, m_nPort) ;
       return E_RECVFAIL ;
   }
   C.Append(m_pack.m_data, nRecv) ;
   for (;;)
   {
       nRecv = recvfrom(m_nSock, m_pack.m_data, HZ_MAXPACKET, 0,(struct sockaddr*) &m_SvrAddr, &m_SvrLen) ;
       if (nRecv < 0)
       {
           close(m_nSock) ;
           m_nSock = 0;
           hzerr(E_RECVFAIL, "Could not recv from server (%s) on port %d", *m_Hostname, m_nPort) ;
           return E_RECVFAIL ;
       }
       if (nRecv == 0)
           break ;
       C.Append(m_pack.m_data, nRecv) ;
   }
   return E_OK ;
}