コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }