Exemplo n.º 1
0
IndexNode IndexPage::newIndex(const char* key, int pageId, size_t cursor)
{
	syncFlag = false;
	size_t size = IndexNode::getSize(key);

	// Create from free space
	if (freeSpace() >= size)
	{
		IndexNode rec(*this, indexStartPos + indexSpace());
		rec.init(key, pageId, cursor);

		setIndexCount(indexCount() + 1);
		setIndexSpace(indexSpace() + size);
		setFreeSpace(freeSpace() - size);

		return rec;
	}

	// Check free node list
	try
	{
		IndexNode rec = freeList->findIndex(size);
		freeList->shrinkIndex(rec, size);

		// Init record
		rec.init(key, pageId, cursor);
		return rec;
	}
	catch (ReachLastIndex)
	{
		error("No space for new record");
		return IndexNode(*this, 0);		// Aviod Warning
	}
}
Exemplo n.º 2
0
void IndexPage::init()
{
	//initFile();
	initCache(true);
	setIndexCount(0);
	setIndexSpace(0);
	setFreeCursor(0);
	setFreeSpace(pageSize - headerSize);
	//sync();
}
Exemplo n.º 3
0
void BaseContainer::loadConfiguration( TDEConfigGroup& group )
{
    setFreeSpace( TQMIN( group.readDoubleNumEntry( "FreeSpace2", 0 ), 1 ) );
    doLoadConfiguration( group );
}