Example #1
0
int TRI_InitPrimaryCollection (TRI_primary_collection_t* primary,
                               TRI_shaper_t* shaper) {
  primary->_shaper = shaper;
  primary->_capConstraint = NULL;
  primary->_keyGenerator = NULL;

  primary->figures = Figures;
  primary->size    = Count;

  TRI_InitBarrierList(&primary->_barrierList, primary);

  TRI_InitAssociativePointer(&primary->_datafileInfo,
                             TRI_UNKNOWN_MEM_ZONE,
                             HashKeyDatafile,
                             HashElementDatafile,
                             IsEqualKeyElementDatafile,
                             NULL);

  TRI_InitAssociativePointer(&primary->_primaryIndex,
                             TRI_UNKNOWN_MEM_ZONE,
                             HashKeyHeader,
                             HashElementDocument,
                             IsEqualKeyDocument,
                             0);

  TRI_InitReadWriteLock(&primary->_lock);

  return TRI_ERROR_NO_ERROR;
}
Example #2
0
int TRI_InitAssociativeSynced (TRI_associative_synced_t* array,
                               TRI_memory_zone_t* zone,
                               uint64_t (*hashKey) (TRI_associative_synced_t*, void const*),
                               uint64_t (*hashElement) (TRI_associative_synced_t*, void const*),
                               bool (*isEqualKeyElement) (TRI_associative_synced_t*, void const*, void const*),
                               bool (*isEqualElementElement) (TRI_associative_synced_t*, void const*, void const*)) {
  array->hashKey = hashKey;
  array->hashElement = hashElement;
  array->isEqualKeyElement = isEqualKeyElement;
  array->isEqualElementElement = isEqualElementElement;

  array->_memoryZone = zone;
  array->_nrAlloc = 0;
  array->_nrUsed  = 0;

  if (NULL == (array->_table = static_cast<void**>(TRI_Allocate(zone, sizeof(void*) * INITIAL_SIZE, true)))) {
    return TRI_ERROR_OUT_OF_MEMORY;
  }

  array->_nrAlloc = INITIAL_SIZE;

  TRI_InitReadWriteLock(&array->_lock);

  return TRI_ERROR_NO_ERROR;
}
Example #3
0
void TRI_InitAssociativeSynced (TRI_associative_synced_t* array,
                                TRI_memory_zone_t* zone,
                                uint64_t (*hashKey) (TRI_associative_synced_t*, void const*),
                                uint64_t (*hashElement) (TRI_associative_synced_t*, void const*),
                                bool (*isEqualKeyElement) (TRI_associative_synced_t*, void const*, void const*),
                                bool (*isEqualElementElement) (TRI_associative_synced_t*, void const*, void const*)) {
  array->hashKey = hashKey;
  array->hashElement = hashElement;
  array->isEqualKeyElement = isEqualKeyElement;
  array->isEqualElementElement = isEqualElementElement;

  array->_memoryZone = zone;
  array->_nrAlloc = 10;

  array->_table = TRI_Allocate(zone, sizeof(void*) * array->_nrAlloc, true);

  if (array->_table == NULL) {
    array->_nrAlloc = 0;
  }

  array->_nrUsed = 0;

#ifdef TRI_INTERNAL_STATS
  array->_nrFinds = 0;
  array->_nrAdds = 0;
  array->_nrRems = 0;
  array->_nrResizes = 0;
  array->_nrProbesF = 0;
  array->_nrProbesA = 0;
  array->_nrProbesD = 0;
  array->_nrProbesR = 0;
#endif

  TRI_InitReadWriteLock(&array->_lock);
}
int TRI_InitPrimaryCollection (TRI_primary_collection_t* primary,
                               TRI_shaper_t* shaper) {
  int res;

  primary->_shaper             = shaper;
  primary->_capConstraint      = NULL;
  primary->_keyGenerator       = NULL;
  primary->_numberDocuments    = 0;
  primary->_lastCompaction     = 0.0;

  primary->figures             = Figures;
  primary->size                = Count;


  res = TRI_InitAssociativePointer(&primary->_datafileInfo,
                                   TRI_UNKNOWN_MEM_ZONE,
                                   HashKeyDatafile,
                                   HashElementDatafile,
                                   IsEqualKeyElementDatafile,
                                   NULL);

  if (res != TRI_ERROR_NO_ERROR) {
    return res;
  }

  res = TRI_InitAssociativePointer(&primary->_primaryIndex,
                                   TRI_UNKNOWN_MEM_ZONE,
                                   HashKeyHeader,
                                   HashElementDocument,
                                   IsEqualKeyDocument,
                                   NULL);

  if (res != TRI_ERROR_NO_ERROR) {
    TRI_DestroyAssociativePointer(&primary->_datafileInfo);

    return res;
  }

  TRI_InitBarrierList(&primary->_barrierList, primary);

  TRI_InitReadWriteLock(&primary->_lock);
  TRI_InitReadWriteLock(&primary->_compactionLock);

  return TRI_ERROR_NO_ERROR;
}
TRI_replication_applier_t* TRI_CreateReplicationApplier (TRI_vocbase_t* vocbase) {
  TRI_replication_applier_t* applier;
  int res;

  applier = TRI_Allocate(TRI_CORE_MEM_ZONE, sizeof(TRI_replication_applier_t), false);

  if (applier == NULL) {
    return NULL;
  }
  
  TRI_InitConfigurationReplicationApplier(&applier->_configuration);
  TRI_InitStateReplicationApplier(&applier->_state);

  res = LoadConfiguration(vocbase, &applier->_configuration);
  
  if (res != TRI_ERROR_NO_ERROR && 
      res != TRI_ERROR_FILE_NOT_FOUND) {
    TRI_set_errno(res);
    TRI_DestroyStateReplicationApplier(&applier->_state);
    TRI_DestroyConfigurationReplicationApplier(&applier->_configuration);
    TRI_Free(TRI_CORE_MEM_ZONE, applier);

    return NULL;
  }

  res = TRI_LoadStateReplicationApplier(vocbase, &applier->_state);

  if (res != TRI_ERROR_NO_ERROR && 
      res != TRI_ERROR_FILE_NOT_FOUND) {
    TRI_set_errno(res);
    TRI_DestroyStateReplicationApplier(&applier->_state);
    TRI_DestroyConfigurationReplicationApplier(&applier->_configuration);
    TRI_Free(TRI_CORE_MEM_ZONE, applier);

    return NULL;
  }
  
  TRI_InitReadWriteLock(&applier->_statusLock);
  TRI_InitSpin(&applier->_threadLock);
  TRI_InitCondition(&applier->_runStateChangeCondition);

  applier->_vocbase      = vocbase;
  applier->_databaseName = TRI_DuplicateStringZ(TRI_CORE_MEM_ZONE, vocbase->_name);
  
  SetTerminateFlag(applier, false); 

  assert(applier->_databaseName != NULL);

  TRI_SetProgressReplicationApplier(applier, "applier created", false);
  
  return applier;
}
Example #6
0
void TRI_InitAssociativeSynced (TRI_associative_synced_t* array,
                                 uint64_t (*hashKey) (TRI_associative_synced_t*, void const*),
                                 uint64_t (*hashElement) (TRI_associative_synced_t*, void const*),
                                 bool (*isEqualKeyElement) (TRI_associative_synced_t*, void const*, void const*),
                                 bool (*isEqualElementElement) (TRI_associative_synced_t*, void const*, void const*)) {
  void** p;
  void** e;

  array->hashKey = hashKey;
  array->hashElement = hashElement;
  array->isEqualKeyElement = isEqualKeyElement;
  array->isEqualElementElement = isEqualElementElement;

  array->_nrAlloc = 10;

  array->_table = TRI_Allocate(sizeof(void*) * array->_nrAlloc);

  p = array->_table;
  e = p + array->_nrAlloc;

  for (;  p < e;  ++p) {
    *p = NULL;
  }

  array->_nrUsed = 0;
  array->_nrFinds = 0;
  array->_nrAdds = 0;
  array->_nrRems = 0;
  array->_nrResizes = 0;
  array->_nrProbesF = 0;
  array->_nrProbesA = 0;
  array->_nrProbesD = 0;
  array->_nrProbesR = 0;

  TRI_InitReadWriteLock(&array->_lock);
}
Example #7
0
int TRI_InitCompactorVocBase (TRI_vocbase_t* vocbase) {
  TRI_InitReadWriteLock(&vocbase->_compactionBlockers._lock);
  TRI_InitVector(&vocbase->_compactionBlockers._data, TRI_UNKNOWN_MEM_ZONE, sizeof(compaction_blocker_t));

  return TRI_ERROR_NO_ERROR;
}