Пример #1
0
static long s_sockexFlush( PHB_SOCKEX pSock, HB_MAXINT timeout, HB_BOOL fSync )
{
   PHB_SOCKEX_Z pZ = HB_ZSOCK_GET( pSock );
   long lResult = 0;

   if( pZ->fCompressOut &&
       ( ! fSync || pZ->z_write.avail_out != HB_ZSOCK_WRBUFSIZE ||
         pZ->z_write.total_in != 0 || pZ->z_write.total_out != 0 ) )
   {
      int err;

      if( pZ->z_write.avail_out > 0 )
         err = deflate( &pZ->z_write, fSync ? Z_FULL_FLUSH : Z_PARTIAL_FLUSH );
      else
         err = Z_OK;

      while( pZ->z_write.avail_out < HB_ZSOCK_WRBUFSIZE )
      {
         if( s_zsock_write( pZ, timeout ) <= 0 )
            break;
         if( err == Z_OK )
            err = deflate( &pZ->z_write, fSync ? Z_FULL_FLUSH : Z_PARTIAL_FLUSH );
      }
      if( err != Z_OK && err != Z_BUF_ERROR )
         hb_socketSetError( HB_ZSOCK_ERROR_BASE - err );
      lResult = HB_ZSOCK_WRBUFSIZE - pZ->z_write.avail_out;
   }
   return lResult + hb_sockexFlush( pZ->sock, timeout, fSync );
}
Пример #2
0
static long s_sockexFlush( PHB_SOCKEX pSock, HB_MAXINT timeout, HB_BOOL fSync )
{
   PHB_SOCKEX_BF pBF = HB_BFSOCK_GET( pSock );

   while( pBF->inbuffer > 0 )
   {
      if( s_bf_send( pBF, timeout ) <= 0 )
         break;
   }
   return pBF->inbuffer + hb_sockexFlush( pBF->sock, timeout, fSync );
}
Пример #3
0
long hb_sockexWrite( PHB_SOCKEX pSock, const void * data, long len, HB_MAXINT timeout )
{
   len = pSock->pFilter->Write( pSock, data, len, timeout );
   if( len >= 0 && pSock->iAutoFlush > 0 )
   {
      if( timeout >= 0 )
         timeout = HB_MAX( timeout, pSock->iAutoFlush );
      hb_sockexFlush( pSock, timeout, HB_FALSE );
   }
   return len;
}
Пример #4
0
static void s_fileFlush( PHB_FILE pFile, HB_BOOL fDirty )
{
   HB_SYMBOL_UNUSED( fDirty );

   hb_sockexFlush( pFile->sock, pFile->timeout, HB_FALSE );
}