/**
  * Do the synchronization job, limited to some amount of work
  * This verb has been designed to be called from within a separate process	 
  * @return true if the process has to be continued
  */
 public function DoSynchronizeChunk($oLog, $oChange, $iMaxChunkSize)
 {
     // Initialize the structures...
     self::$m_oCurrentTask = $this->m_oDataSource;
     $this->m_oStatLog = $oLog;
     $this->m_oChange = $oChange;
     // Prepare internal structures (not the first pass)
     $this->PrepareProcessing(false);
     $iCurrJob = $this->m_oStatLog->Get('status_curr_job');
     $iCurrPos = $this->m_oStatLog->Get('status_curr_pos');
     $this->m_oStatLog->AddTrace("Synchronizing chunk - curr_job:{$iCurrJob}, curr_pos:{$iCurrPos}, max_chunk_size:{$iMaxChunkSize}");
     $bContinue = false;
     switch ($iCurrJob) {
         case 1:
         default:
             $this->DoJob1($iMaxChunkSize, $iCurrPos);
             $bContinue = true;
             break;
         case 2:
             $this->DoJob2($iMaxChunkSize, $iCurrPos);
             $bContinue = true;
             break;
         case 3:
             $bContinue = $this->DoJob3($iMaxChunkSize, $iCurrPos);
             break;
     }
     $this->m_oStatLog->DBUpdate($this->m_oChange);
     self::$m_oCurrentTask = null;
     return $bContinue;
 }