Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 1998.
//
// File: FRESH.HXX
//
// Contents: Fresh indexes
//
// Classes: CFresh
//
// History: 16-May-91 BartoszM Created.
//
//----------------------------------------------------------------------------
#pragma once
#include <xact.hxx>
#include <freshlog.hxx>
#include "fretest.hxx"
#include "dqueue.hxx"
class CIndexTrans; class CMergeTrans; class PStorage; class CWidArray; class CDocList; class CResManager;
class CPartList; class CPartition; class CWordList;
class PSaveProgressTracker; class CEnumWorkid;
//+---------------------------------------------------------------------------
//
// Class: CFresh
//
// Purpose: Contains the mapping of work id's into the most current
// indexes for these work id's.
//
// History: 16-May-91 BartoszM Created.
//
//----------------------------------------------------------------------------
class CFresh { friend class CFreshTest; friend class CResManager; friend class CMerge;
public:
CFresh ( PStorage& storage, CTransaction& xact, CPartList & partList );
~CFresh ();
void LokInit();
CFreshTest* LokGetFreshTest();
unsigned LokCount() const { return _master->Count(); }
unsigned LokDeleteCount() const { return _master->DeleteCount(); }
WORKID LokUpdate ( CMerge & merge, CMergeTrans& xact, CPersFresh & newFreshLog, INDEXID new_iid, int cInd, INDEXID aIidOld[], XPtr<CFreshTest> & xFreshTestAtMerge );
void LokAddIndex ( CIndexTrans& xact, INDEXID iid, INDEXID iidDeleted, CDocList& docList, CWordList const & wordList );
WORKID LokRemoveIndexes ( CMergeTrans& xact, CPersFresh & newFreshLog, unsigned cInd, INDEXID aIidOld[], INDEXID iidOldDeleted );
void LokDeleteDocuments ( CIndexTrans& xact, CDocList& docList, INDEXID iidDeleted );
void LokReleaseFreshTest( CFreshTest* test );
void LokCommitMaster ( CFreshTest* newMaster );
void LokEmpty();
void LokMakeFreshLogBackup( PStorage & storage, PSaveProgressTracker & progressTracker, XInterface<ICiEnumWorkids> & xWorkidEnum ); #if DEVL == 1
void Dump (); #endif
#ifdef CIEXTMODE
void CiExtDump(void *ciExtSelf); #endif
private:
WORKID LokBuildNewFreshLog( CFreshTest *newFreTest, CPersFresh & newFreshLog, CIdxSubstitution& subst);
PStorage & _storage; CFreshTest* _master; // master copy of in-memory fresh test
CPersFresh _persFresh; CPartList & _partList; // PartList
};
|