Esempio n. 1
0
void* sync_engine_main_routine(void* data) {
	
	printf("Starting sync engine main routine...\n");
	delay_sync = get_object_count_from_database(database);
	pthread_mutex_lock(&sync_mutex);
	while(!stop_running) {
		struct timespec   ts;
		struct timeval    tp;
		gettimeofday(&tp, NULL);
		/* Convert from timeval to timespec */
		ts.tv_sec  = tp.tv_sec;
		ts.tv_nsec = tp.tv_usec * 1000;
		ts.tv_sec += WAIT_TIME_SECONDS;
		
		printf("Sync engine blocked for %d seconds...\n",WAIT_TIME_SECONDS);
		pthread_cond_timedwait(&sync_cond, &sync_mutex, &ts);
		printf("Sync engine continues w/ current operations...\n");
	
		if(!delay_sync) {
			if(process_local_changes()) {
				break;
			}
		} else {
			delay_sync = 0;
		}

	}
	pthread_mutex_unlock(&sync_mutex);
	
    return NULL;
}
Esempio n. 2
0
bool CSyncEngine::PerformSync()
{
  //Lock();

  ATLTRACE(_T("Performing sync\n"));
  ::ResetEvent(m_hDoSyncEvent);
  if (!m_delaySync && !m_dbResetDelay) {
      //for (int i = 0; i < 10000; i++ )
	    process_local_changes();
  } else if (m_dbResetDelay) {
	/* reset db for next iteration */
	reset_sync_db();
	clear_client_id();
	m_dbResetDelay = 0;
	m_delaySync = 0;
  } else {
    m_delaySync = 0;
  }

  //Unlock();
  return true;
}