private InsertResult InsertWithoutSplit( CustomerRecord newCustomerRecord, AdditionalSpaceAction additionalSpaceAction) { var pageSize = GetCorrectPageSize(additionalSpaceAction); for (int recordIndex = 0; recordIndex < pageSize; recordIndex++) { if (_customerRecords[recordIndex] == null) { _customerRecords[recordIndex] = newCustomerRecord; break; } if (_customerRecords[recordIndex].CustomerId > newCustomerRecord.CustomerId) { _customerRecords = ShiftAndInsert( _customerRecords, newCustomerRecord, recordIndex, pageSize); break; } } return(InsertResult.CreateWithoutSplit()); }
public InsertResult Insert(CustomerRecord newCustomerRecord) { var indexToInsert = FindIndexToInsert(newCustomerRecord); var insertResult = _dataPages[indexToInsert].Insert(newCustomerRecord); if (insertResult.WasSplitCaused) { if (_indexes[indexToInsert] > 0) { ShiftIndexes(indexToInsert); ShiftPages(indexToInsert); } UpdateIndexsAndPages(indexToInsert, insertResult); } if (PageIsFull()) { return(CreateSplit()); } return(InsertResult.CreateWithoutSplit()); }