public static Db4objects.Db4o.Internal.Freespace.AbstractFreespaceManager CreateNew
			(LocalObjectContainer file, byte systemType)
		{
			systemType = CheckType(systemType);
			int unblockedDiscardLimit = file.ConfigImpl.DiscardFreeSpace();
			int blockedDiscardLimit = unblockedDiscardLimit == int.MaxValue ? unblockedDiscardLimit
				 : file.BlockConverter().BytesToBlocks(unblockedDiscardLimit);
			IProcedure4 slotFreedCallback = new _IProcedure4_50(file);
			switch (systemType)
			{
				case FmIx:
				{
					return new FreespaceManagerIx(blockedDiscardLimit);
				}

				case FmBtree:
				{
					return new BTreeFreespaceManager(file, slotFreedCallback, blockedDiscardLimit);
				}

				default:
				{
					return new InMemoryFreespaceManager(slotFreedCallback, blockedDiscardLimit);
					break;
				}
			}
		}
Exemplo n.º 2
0
        public static Db4objects.Db4o.Internal.Freespace.AbstractFreespaceManager CreateNew
            (LocalObjectContainer file, byte systemType)
        {
            systemType = CheckType(systemType);
            int unblockedDiscardLimit = file.ConfigImpl.DiscardFreeSpace();
            int blockedDiscardLimit   = unblockedDiscardLimit == int.MaxValue ? unblockedDiscardLimit
                                 : file.BlockConverter().BytesToBlocks(unblockedDiscardLimit);
            IProcedure4 slotFreedCallback = new _IProcedure4_50(file);

            switch (systemType)
            {
            case FmIx:
            {
                return(new FreespaceManagerIx(blockedDiscardLimit));
            }

            case FmBtree:
            {
                return(new BTreeFreespaceManager(file, slotFreedCallback, blockedDiscardLimit));
            }

            default:
            {
                return(new InMemoryFreespaceManager(slotFreedCallback, blockedDiscardLimit));

                break;
            }
            }
        }