1
0
Fork 0

some cleanup

This commit is contained in:
Jan Steemann 2012-11-09 17:50:07 +01:00
parent 0c732dfc69
commit be39dbd419
1 changed files with 34 additions and 61 deletions

View File

@ -415,6 +415,31 @@ static void FreeDatafilesVector (TRI_vector_pointer_t* const vector) {
TRI_DestroyVectorPointer(vector); TRI_DestroyVectorPointer(vector);
} }
////////////////////////////////////////////////////////////////////////////////
/// @brief iterate over all datafiles in a vector
////////////////////////////////////////////////////////////////////////////////
static bool IterateDatafilesVector (const TRI_vector_pointer_t* const files,
bool (*iterator)(TRI_df_marker_t const*, void*, TRI_datafile_t*, bool),
void* data) {
size_t i, n;
n = files->_length;
for (i = 0; i < n; ++i) {
TRI_datafile_t* datafile;
int result;
datafile = (TRI_datafile_t*) TRI_AtVectorPointer(files, i);
result = TRI_IterateDatafile(datafile, iterator, data, false);
if (! result) {
return false;
}
}
return true;
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief closes the datafiles passed in the vector /// @brief closes the datafiles passed in the vector
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -902,8 +927,7 @@ bool TRI_IterateCollection (TRI_collection_t* collection,
TRI_vector_pointer_t* datafiles; TRI_vector_pointer_t* datafiles;
TRI_vector_pointer_t* journals; TRI_vector_pointer_t* journals;
TRI_vector_pointer_t* compactors; TRI_vector_pointer_t* compactors;
size_t i; bool result;
size_t n;
datafiles = TRI_CopyVectorPointer(TRI_UNKNOWN_MEM_ZONE, &collection->_datafiles); datafiles = TRI_CopyVectorPointer(TRI_UNKNOWN_MEM_ZONE, &collection->_datafiles);
if (datafiles == NULL) { if (datafiles == NULL) {
@ -929,71 +953,20 @@ bool TRI_IterateCollection (TRI_collection_t* collection,
return false; return false;
} }
// iterate over all datafiles if (! IterateDatafilesVector(datafiles , iterator, data) ||
n = datafiles->_length; ! IterateDatafilesVector(compactors, iterator, data) ||
! IterateDatafilesVector(journals, iterator, data)) {
for (i = 0; i < n; ++i) { result = false;
TRI_datafile_t* datafile;
bool result;
datafile = datafiles->_buffer[i];
result = TRI_IterateDatafile(datafile, iterator, data, false);
if (! result) {
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, datafiles);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, journals);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, compactors);
return false;
}
}
// iterate over all compactors
n = compactors->_length;
for (i = 0; i < n; ++i) {
TRI_datafile_t* datafile;
bool result;
datafile = compactors->_buffer[i];
result = TRI_IterateDatafile(datafile, iterator, data, false);
if (! result) {
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, datafiles);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, journals);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, compactors);
return false;
}
}
// iterate over all journals
n = journals->_length;
for (i = 0; i < n; ++i) {
TRI_datafile_t* datafile;
bool result;
datafile = journals->_buffer[i];
result = TRI_IterateDatafile(datafile, iterator, data, false);
if (! result) {
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, datafiles);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, journals);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, compactors);
return false;
} }
else {
result = true;
} }
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, datafiles); TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, datafiles);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, journals); TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, journals);
TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, compactors); TRI_FreeVectorPointer(TRI_UNKNOWN_MEM_ZONE, compactors);
return true; return result;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////