Ejemplo n.º 1
0
		/// <exception cref="Db4objects.Db4o.Ext.OldFormatException"></exception>
		internal virtual void ReadThis()
		{
			NewSystemData(AbstractFreespaceManager.FmLegacyRam, StandardIdSystemFactory.Legacy
				);
			BlockSizeReadFromFile(1);
			_fileHeader = FileHeader.Read(this);
			if (Config().GenerateCommitTimestamps().IsUnspecified())
			{
				Config().GenerateCommitTimestamps(_systemData.IdToTimestampIndexId() != 0);
			}
			CreateStringIO(_systemData.StringEncoding());
			CreateIdSystem();
			InitializeClassMetadataRepository();
			InitalizeWeakReferenceSupport();
			SetNextTimeStampId(SystemData().LastTimeStampID());
			ClassCollection().SetID(_systemData.ClassCollectionID());
			ClassCollection().Read(SystemTransaction());
			Converter.Convert(new ConversionStage.ClassCollectionAvailableStage(this));
			_fileHeader.ReadIdentity(this);
			if (_config.IsReadOnly())
			{
				return;
			}
			if (!ConfigImpl.CommitRecoveryDisabled())
			{
				_fileHeader.CompleteInterruptedTransaction(this);
			}
			IFreespaceManager blockedFreespaceManager = AbstractFreespaceManager.CreateNew(this
				, _systemData.FreespaceSystem());
			InstallFreespaceManager(blockedFreespaceManager);
			blockedFreespaceManager.Read(this, _systemData.InMemoryFreespaceSlot());
			blockedFreespaceManager.Start(_systemData.BTreeFreespaceId());
			_fileHeader = _fileHeader.Convert(this);
			if (FreespaceMigrationRequired(blockedFreespaceManager))
			{
				MigrateFreespace(blockedFreespaceManager);
			}
			WriteHeader(true, false);
			if (Converter.Convert(new ConversionStage.SystemUpStage(this)))
			{
				_systemData.ConverterVersion(Converter.Version);
				_fileHeader.WriteVariablePart(this);
				Transaction.Commit();
			}
		}
Ejemplo n.º 2
0
		internal virtual void ConfigureNewFile()
		{
			BlockSize(ConfigImpl.BlockSize());
			_fileHeader = FileHeader.NewCurrentFileHeader();
			SetRegularEndAddress(_fileHeader.Length());
			NewSystemData(ConfigImpl.FreespaceSystem(), ConfigImpl.IdSystemType());
			SystemData().ConverterVersion(Converter.Version);
			CreateStringIO(_systemData.StringEncoding());
			CreateIdSystem();
			InitializeClassMetadataRepository();
			InitalizeWeakReferenceSupport();
			GenerateNewIdentity();
			AbstractFreespaceManager blockedFreespaceManager = AbstractFreespaceManager.CreateNew
				(this);
			InstallFreespaceManager(blockedFreespaceManager);
			InitNewClassCollection();
			InitializeEssentialClasses();
			_fileHeader.InitNew(this);
			blockedFreespaceManager.Start(0);
		}