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; }
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; }
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; }
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); }
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; }