private CategoryInformation CreateCategory(string categoryName) { var nextCategoryIndex = _tableHeaderStructure.CategoriesCount++; var newCategory = new CategoryInformation { CategoryIndex = nextCategoryIndex, CategoryName = categoryName, LogsCount = 0, IsNewCategory = true }; _categoriesByName[categoryName] = newCategory; _categoriesByIndex[nextCategoryIndex] = newCategory; return(newCategory); }
private void OpenExistingTable() { // Attempt to read table data. _tableHeaderStorage.Open(); _logsStorage.Open(); _logsDataStorage.Open(); _categoriesStorage.Open(); _tableHeaderStorage.ReadStructure(ref _tableHeaderStructure); // Load categories. var oneCategoryEntry = default(RaxCategoryEntry); for (int i = 0; i < _tableHeaderStructure.CategoriesCount; i++) { var category = new CategoryInformation(); _categoriesStorage.SetPositionOffset(i * _catSize); _categoriesStorage.ReadStructure(ref oneCategoryEntry); category.CategoryIndex = i; category.CategoryName = new string(oneCategoryEntry.CategoryName, 0, oneCategoryEntry.CategoryRealNameLengthInBytes / 2); category.LogsCount = oneCategoryEntry.Header.LogsCountInCategory; category.MinTimestamp = oneCategoryEntry.Header.MinTimestamp; category.MaxTimestamp = oneCategoryEntry.Header.MaxTimestamp; _categoriesByIndex[category.CategoryIndex] = category; _categoriesByName[category.CategoryName] = category; } // Load indexes for (int year = new DateTime(_tableHeaderStructure.MinTimestamp).Year; year <= new DateTime(_tableHeaderStructure.MaxTimestamp).Year; ++year) { GetOrCreateYearIndexStorage(year); } }