#include <fsc_CopyMgr.h>


Definition at line 48 of file fsc_CopyMgr.h.
Public Member Functions | |
| fsc_CopyMgr (fsc_MedPosMgr *a_medPosMgr_p, df_SplitInfo &a_splitInfo) | |
| fsc_CopyMgr (fsc_dlcType_e a_dlcType, fsc_EntryMgr *a_entryMgr_p, ivd_DataType_t a_dataType) | |
| fsc_CopyMgr (df_SplitInfo &a_splitInfo) | |
| fsc_CopyMgr (Int16_t a_numOfElement, ivd_RecordIDX_t a_copyIdx, ivd_DataType_t a_dataType) | |
| virtual | ~fsc_CopyMgr () |
| void | AddSplit (fsc_Split *a_split_p) |
| void | Remove (ivd_MediaKey_t a_mediumKey, ivd_MedVolNum_t a_medVolNum) |
| remove all entries from particular volume. | |
| bool | Remove (ivd_MediaKey_t a_mediumKey, ivd_MedVolNum_t a_medVolNum, UInt32_t a_blockOffs) |
| Remove one particular entry. | |
| void | GetCopiesPos (ivd_CopiesPos_v_t &a_copiesPos_v, fsc_MigInfo_t &migInfo) |
| bool | Write2DB (fsc_NextEntity_t &a_nextEntry, fio_Transaction &a_trans) |
| Write all changes to DB, update nextEntry structure to proper index and size return true if nextEntry structure is changed. | |
| void | Dump (ostream &os) |
| bool | TreeWalk (fsc_Collector &a_collector) |
Public Attributes | |
| fsc_Copy_p_l_t | m_copy_p_l |
| log_CLASSID_m | |
| Macro to add class name member s_className. | |
Private Attributes | |
| fio_RelFileTrans & | m_relFile |
| this is pointer to relative file "fsc_xxxx.lrf" object. | |
Friends | |
| class | ut_fsc_CopyMgr |
| fsc_CopyMgr::fsc_CopyMgr | ( | fsc_MedPosMgr * | a_medPosMgr_p, | |
| df_SplitInfo & | a_splitInfo | |||
| ) |
| fsc_CopyMgr::fsc_CopyMgr | ( | fsc_dlcType_e | a_dlcType, | |
| fsc_EntryMgr * | a_entryMgr_p, | |||
| ivd_DataType_t | a_dataType | |||
| ) |
Definition at line 44 of file fsc_CopyMgr.cpp.
References fsc_CopyMgr(), log_FUNC_m, and m_copy_p_l.
00048 : 00049 m_relFile(*g_copyRF_p) 00050 { 00051 log_FUNC_m(fsc_CopyMgr(fsc_dlcType_e, fsc_EntryMgr, df_SplitInfo)); 00052 00053 // first copy is got from higher level 00054 fsc_Copy* copy_p = new fsc_Copy(a_dlcType, a_entryMgr_p, a_dataType); 00055 00056 m_copy_p_l.push_front(copy_p); 00057 } //============================================================================//

| fsc_CopyMgr::fsc_CopyMgr | ( | df_SplitInfo & | a_splitInfo | ) |
Definition at line 60 of file fsc_CopyMgr.cpp.
References df_SplitInfo::Dump(), fsc_CopyMgr(), ie_FSC_INV_SPLIT_INFO, ie_FSC_TOO_MUCH_COPIES, log_FUNC_m, m_copy_p_l, maxNumOfCopies_c, and df_SplitInfo::noCopies.
00062 : 00063 m_relFile(*g_copyRF_p) 00064 { 00065 log_FUNC_m(fsc_CopyMgr(df_SplitInfo)); 00066 00067 if ( a_splitInfo.noCopies > 0) { 00068 if (a_splitInfo.noCopies > maxNumOfCopies_c) { 00069 throw ivd_InternalError(ie_FSC_TOO_MUCH_COPIES, 00070 "Front end agent created too many copies." + a_splitInfo.Dump(), true); 00071 } 00072 fsc_Copy* copy_p = new fsc_Copy(a_splitInfo); 00073 00074 m_copy_p_l.push_front(copy_p); 00075 // reserve space for all copies 00076 for (int i = 1; i < a_splitInfo.noCopies; i++ ) { 00077 fsc_Copy* copy_p = new fsc_Copy(); 00078 00079 m_copy_p_l.push_front(copy_p); 00080 } 00081 } 00082 else { 00083 throw ivd_InternalError(ie_FSC_INV_SPLIT_INFO, 00084 "Number of copies are not specified." + a_splitInfo.Dump(), true); 00085 } 00086 } //============================================================================//

| fsc_CopyMgr::fsc_CopyMgr | ( | Int16_t | a_numOfElement, | |
| ivd_RecordIDX_t | a_copyIdx, | |||
| ivd_DataType_t | a_dataType | |||
| ) |
Definition at line 89 of file fsc_CopyMgr.cpp.
References alloca(), cmn_HexDump(), dbg_DETAIL, fsc_CopyMgr(), log_DBG_m, log_FUNC_m, m_copy_p_l, m_relFile, and fio_RelFile::ReadRec().
00093 : 00094 fsc_EntryMgr(a_numOfElement, a_copyIdx), 00095 m_relFile(*g_copyRF_p) 00096 { 00097 log_FUNC_m(fsc_CopyMgr(Int16_t..)); 00098 00099 // log_DBG_m(dbg_DETAIL,"Get " << a_numOfElement 00100 // << " copies from idx " << a_copyIdx); 00101 00102 if (a_numOfElement > 0) { 00103 fsc_Copy_t *copyData_v = reinterpret_cast<fsc_Copy_t*> 00104 (alloca(a_numOfElement * sizeof(fsc_Copy_t))); 00105 00106 fsc_Copy_t *p = copyData_v; 00107 fsc_Copy_t *endp = ©Data_v[a_numOfElement]; 00108 00109 m_relFile.ReadRec(a_copyIdx, copyData_v, a_numOfElement); 00110 00111 log_DBG_m(dbg_DETAIL, "R copies from = " << a_copyIdx << endl << 00112 cmn_HexDump(copyData_v, a_numOfElement * sizeof(fsc_Copy_t), sizeof(fsc_Copy_t), false) ); 00113 // cout << "Read copy vect to DB" << endl; 00114 // cout << cmn_HexDump(iter, a_numOfElement * sizeof(fsc_Copy_t) ) << endl; 00115 00116 for (; p < endp; p++) { 00117 fsc_Copy* copy_p = new fsc_Copy(*p); 00118 m_copy_p_l.push_back(copy_p); 00119 } 00120 } 00121 } //============================================================================//

| fsc_CopyMgr::~fsc_CopyMgr | ( | ) | [virtual] |
Definition at line 124 of file fsc_CopyMgr.cpp.
References m_copy_p_l.
00125 { 00126 for (fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00127 iter != m_copy_p_l.end(); 00128 ++iter) { 00129 delete *iter; 00130 } 00131 }
| void fsc_CopyMgr::AddSplit | ( | fsc_Split * | a_split_p | ) |
Definition at line 134 of file fsc_CopyMgr.cpp.
References cmn_Num2Str(), dbg_DETAIL, dlc_NotUsed, ie_INVALID_ARG, log_DBG_m, log_FUNC_m, m_copy_p_l, sp_ALREADY_ADDED, sp_CHECK_OTHER_COPIES, sp_INSERTTED, sp_NEW_COPY, sp_REPLACE, and sp_SENTINEL.
Referenced by fsc_Generation::Insert(), and Remove().
00134 { 00135 log_FUNC_m(AddSplit); 00136 00137 // stringstream dump; 00138 // a_split_p->Dump(dump); 00139 // log_DBG_m(dbg_DETAIL, "AddSplit \n" << dump.str()); 00140 fsc_Split_p_l_i possibleInsertPoint; 00141 fsc_Split_p_l_t replacedSplit_p_l; 00142 00143 sp_State_e checkCopyState = sp_SENTINEL; 00144 sp_State_e addState = sp_NEW_COPY; 00145 00146 fsc_Copy_p_l_i possibleUsefullCopy; 00147 fsc_Copy_p_l_i freeCopy = m_copy_p_l.end(); 00148 fsc_Copy_p_l_i it; 00149 00150 for (it = m_copy_p_l.begin(); it != m_copy_p_l.end(); ++it) { 00151 if ((**it).isReorganized()) { 00152 continue; 00153 } 00154 //stringstream dump; 00155 //(**it).Dump(dump); 00156 //log_DBG_m(dbg_DETAIL, "Copy from copyMgr \n" << dump.str()); 00157 if ((**it).m_nextEntry.dlcType == dlc_NotUsed) { // free element 00158 log_DBG_m(dbg_DETAIL, "Found unused copy"); 00159 freeCopy = it; 00160 continue; // skip it first 00161 } 00162 switch (addState = (**it).AddSplit(a_split_p, possibleInsertPoint ,replacedSplit_p_l)) { 00163 case sp_INSERTTED : 00164 log_DBG_m(dbg_DETAIL, "INSERTTED"); 00165 return; 00166 00167 case sp_NEW_COPY : 00168 log_DBG_m(dbg_DETAIL, "NEW_COPY"); 00169 continue; 00170 00171 case sp_CHECK_OTHER_COPIES : // if no other places then use possibleInsertPoint 00172 // this status is return when added split has enought space 00173 // but it is not sure if is proper place. 00174 log_DBG_m(dbg_DETAIL, "CHECK_OTHER_COPIES"); 00175 checkCopyState = addState; 00176 possibleUsefullCopy = it; 00177 continue; 00178 00179 case sp_REPLACE : {// expect some splits in replacedSplit_p_l list 00180 log_DBG_m(dbg_DETAIL, "REPLACE"); 00181 fsc_Split_p_l_i iter = replacedSplit_p_l.begin(); 00182 for ( ; iter != replacedSplit_p_l.end(); ++iter ) { 00183 // NOTE: recursion, call this method again 00184 // WARNING: replace only split that does'n fit with 00185 // split that its offset proper fit to previous split 00186 AddSplit(*iter); // insert it again 00187 } 00188 return; 00189 } 00190 case sp_ALREADY_ADDED : 00191 log_DBG_m(dbg_DETAIL, "ALREADY_ADDED"); 00192 delete a_split_p; 00193 return; 00194 00195 default : ; 00196 } 00197 } 00198 if (checkCopyState == sp_CHECK_OTHER_COPIES) { 00199 log_DBG_m(dbg_DETAIL, "action INSERT after CHECK_OTHER_COPIES"); 00200 // todo direct insert to copy 00201 (*possibleUsefullCopy)->AddSplit(possibleInsertPoint, a_split_p); 00202 return; 00203 } 00204 00205 if (addState == sp_NEW_COPY) { 00206 log_DBG_m(dbg_DETAIL, "action NEW_COPY"); 00207 if (freeCopy != m_copy_p_l.end()) { 00208 // how to know if split is whole or not 00209 // maybe lastsplit bool will help 00210 new (*freeCopy) fsc_Copy(a_split_p); // instantiate on willing addres 00211 } 00212 else { 00213 fsc_Copy* copy_p = new fsc_Copy(a_split_p); 00214 00215 m_copy_p_l.insert(it, copy_p); 00216 } 00217 return; 00218 } 00219 else { 00220 throw ivd_InternalError(ie_INVALID_ARG, 00221 "Can't insert split. State " + cmn_Num2Str((int)addState), true); 00222 } 00223 }


| void fsc_CopyMgr::Remove | ( | ivd_MediaKey_t | a_mediumKey, | |
| ivd_MedVolNum_t | a_medVolNum | |||
| ) |
remove all entries from particular volume.
Definition at line 226 of file fsc_CopyMgr.cpp.
References AddSplit(), log_FUNC_m, and m_copy_p_l.
Referenced by fsc_Generation::Remove(), and Remove().
00227 { 00228 log_FUNC_m(Remove); 00229 fsc_Split_p_l_t replacedSplit_p_l; 00230 00231 fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00232 for (;iter != m_copy_p_l.end(); ++iter) { 00233 // remove entry from all copies and collect orphaned splits from all copies 00234 (*iter)->Remove(a_mediumKey, a_medVolNum, replacedSplit_p_l); 00235 } 00236 if (replacedSplit_p_l.size()) { 00237 //log_DbgLevel_t dbgLevel = dbg_GetLevel(); 00238 //UInt32_t dbgFlags = dbg_GetFlags(); 00239 //bool dbgActiv = dbg_IsActive(); 00240 00241 //dbg_On(dbg_DETAIL, 00242 // dbg_THROW | dbg_INOUT | dbg_COMPACT | dbg_ERRORLOG, 00243 // "."); 00244 // if removed copy contains splits than all 00245 // remaining splits have to be reinserted. 00246 fsc_Split_p_l_i iter = replacedSplit_p_l.begin(); 00247 for ( ; iter != replacedSplit_p_l.end(); ++iter ) { 00248 AddSplit(*iter); // insert it again 00249 } 00250 replacedSplit_p_l.clear(); 00251 00252 //dbg_SetLevel(dbgLevel); 00253 //dbg_SetFlags(dbgFlags); 00254 //if (!dbgActiv) { 00255 // dbg_Off(); 00256 //} 00257 } 00258 }


| bool fsc_CopyMgr::Remove | ( | ivd_MediaKey_t | a_mediumKey, | |
| ivd_MedVolNum_t | a_medVolNum, | |||
| UInt32_t | a_blockOffs | |||
| ) |
Remove one particular entry.
Definition at line 261 of file fsc_CopyMgr.cpp.
References AddSplit(), log_FUNC_m, m_copy_p_l, and Remove().
00263 { 00264 log_FUNC_m(Remove); 00265 bool ret = false; 00266 fsc_Split_p_l_t replacedSplit_p_l; 00267 00268 fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00269 for (;(iter != m_copy_p_l.end()) && !ret; ++iter) { 00270 // remove first match entry and stop 00271 ret = (*iter)->Remove(a_mediumKey, a_medVolNum, a_blockOffs, replacedSplit_p_l); 00272 } 00273 if (replacedSplit_p_l.size()) { 00274 // if removed copy contains splits than all 00275 // remaining splits have to be reinserted. 00276 fsc_Split_p_l_i iter = replacedSplit_p_l.begin(); 00277 for ( ; iter != replacedSplit_p_l.end(); ++iter ) { 00278 AddSplit(*iter); // insert it again 00279 } 00280 replacedSplit_p_l.clear(); 00281 } 00282 return ret; 00283 }

| void fsc_CopyMgr::GetCopiesPos | ( | ivd_CopiesPos_v_t & | a_copiesPos_v, | |
| fsc_MigInfo_t & | migInfo | |||
| ) |
Definition at line 286 of file fsc_CopyMgr.cpp.
References dbg_DETAIL, dlc_NotUsed, fsc_NextEntity_t::dlcType, fsc_Copy::Dump(), fsc_Copy::GetMediaPos(), ivd_DATA_d, log_DBG_m, log_FUNC_m, log_MSG_m, log_WARNING, m_copy_p_l, fsc_Copy::m_dataType, fsc_MigInfo_t::m_fileId, fsc_MigInfo_t::m_migId, and fsc_Entry::m_nextEntry.
Referenced by fsc_Generation::GetCopiesPos().
00286 { 00287 log_FUNC_m(GetCopiesPos); 00288 //FIX bug 690 reserve space not alocate 00289 a_copiesPos_v.reserve(m_copy_p_l.size()); 00290 00291 int i = 0; 00292 for (fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00293 iter != m_copy_p_l.end(); 00294 ++iter, i++) { 00295 fsc_Copy &c = (**iter); 00296 log_DBG_m(dbg_DETAIL," Copy's record type " << (int)c.m_nextEntry.dlcType 00297 << " data type " << c.m_dataType); 00298 if ( c.m_nextEntry.dlcType != dlc_NotUsed ) { 00299 if ((c.m_dataType & ivd_DATA_d) != ivd_DATA_d) { 00300 ostringstream sstr; 00301 sstr << "The copy " << (i + 1) 00302 << " (FileID: " << a_migInfo.m_fileId 00303 << ", MigID: " << a_migInfo.m_migId 00304 << ") does not contain the data flag, " 00305 << "but the generation contains it. " 00306 << "Continuing with the recall...\n"; 00307 c.Dump(sstr); 00308 // log warning without the stack dump into the error.log 00309 log_MSG_m(log_WARNING, 0, sstr.str()); 00310 continue; 00311 } 00312 00313 //FIX bug 690 add one by one 00314 a_copiesPos_v.resize(a_copiesPos_v.size() + 1); 00315 c.GetMediaPos(a_copiesPos_v.back(), a_migInfo); 00316 if (a_copiesPos_v.back().size() == 0) { 00317 a_copiesPos_v.pop_back(); 00318 } 00319 } 00320 } 00321 if (a_copiesPos_v.size() != a_copiesPos_v.capacity()) { 00322 log_DBG_m(dbg_DETAIL,"Missing copy info of fileId " << a_migInfo.m_fileId 00323 << " migId " << a_migInfo.m_migId); 00324 } 00325 }


| bool fsc_CopyMgr::Write2DB | ( | fsc_NextEntity_t & | a_nextEntry, | |
| fio_Transaction & | a_trans | |||
| ) |
Write all changes to DB, update nextEntry structure to proper index and size return true if nextEntry structure is changed.
Definition at line 344 of file fsc_CopyMgr.cpp.
References cmn_HexDump(), dbg_DETAIL, dlc_Copy, dlc_NotUsed, fsc_NextEntity_t::dlcType, fsc_Vector_t::entryIdx, fio_RelFileTrans::GetVectorIDX(), log_DBG_m, log_FUNC_m, m_copy_p_l, fsc_EntryMgr::m_prevVecIndex, fsc_EntryMgr::m_prevVecSize, m_relFile, fsc_Copy_t::nextEntity, fsc_Vector_t::numOfElement, fio_RelFileTrans::ReleaseVectorIdx(), size, fsc_NextEntity_t::vector, fsc_Copy::Write2DB(), and fio_RelFile::WriteRec().
Referenced by fsc_Generation::Write2DB().
00345 { 00346 log_FUNC_m(Write2DB); 00347 00348 bool vecIdxOrSizeChanged = false; 00349 bool vecDataChanged = false; 00350 00351 fsc_Copy_v_st size = m_copy_p_l.size(); 00352 log_DBG_m(dbg_DETAIL," Num of copies before write = " << size ); 00353 00354 if (size) { 00355 fsc_Copy_t *p = g_copyData_v; 00356 fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00357 while (iter != m_copy_p_l.end()) { // fulfill the data vector 00358 fsc_Copy *c = (*iter); 00359 if ( c->Write2DB(*p, a_trans)) { 00360 vecDataChanged = true; 00361 if ( p->nextEntity.dlcType == dlc_NotUsed 00362 && p->nextEntity.vector.entryIdx == 0 00363 && p->nextEntity.vector.numOfElement == 0) { // entry was removed 00364 // release object 00365 log_DBG_m(dbg_DETAIL,"Copy released iter =" << hex << *iter << dec); 00366 delete c; 00367 size--; 00368 iter = m_copy_p_l.erase(iter); 00369 log_DBG_m(dbg_DETAIL,"iter after erase = " << hex << *iter << dec); 00370 continue; 00371 } 00372 } 00373 ++iter; 00374 p++; 00375 } 00376 } 00377 log_DBG_m(dbg_DETAIL," Num of copies after write = " << size ); 00378 // it is possible that size became zero after handle each element 00379 if (size == 0) { 00380 log_DBG_m(dbg_DETAIL,"All Copies released" ); 00381 if( size != m_prevVecSize) { 00382 m_relFile.ReleaseVectorIdx(m_prevVecIndex, m_prevVecSize, &a_trans); 00383 m_prevVecSize = 0; 00384 m_prevVecIndex = 0; 00385 vecIdxOrSizeChanged = true; 00386 } 00387 a_nextEntry.dlcType = dlc_NotUsed; 00388 a_nextEntry.vector.entryIdx = 0; 00389 a_nextEntry.vector.numOfElement = 0; 00390 return vecIdxOrSizeChanged; 00391 } 00392 if (size == 1) { 00393 // special handling. Delete previous copies and return what last copy contain 00394 log_DBG_m(dbg_DETAIL,"Only one copy left" ); 00395 a_nextEntry = g_copyData_v[0].nextEntity; 00396 log_DBG_m(dbg_DETAIL, "a_nextEntry = " << 00397 cmn_HexDump(&a_nextEntry, sizeof(fsc_NextEntity_t), sizeof(fsc_NextEntity_t), false) ); 00398 size--; 00399 if( size != m_prevVecSize) { 00400 m_relFile.ReleaseVectorIdx(m_prevVecIndex, m_prevVecSize, &a_trans); 00401 m_prevVecSize = 0; 00402 m_prevVecIndex = 0; 00403 } 00404 return true; 00405 } 00406 00407 ivd_RecordIDX_t idx = m_prevVecIndex; // curent vector index 00408 if (idx == 0) { 00409 idx = m_relFile.GetVectorIDX(size, &a_trans); 00410 vecIdxOrSizeChanged = true; 00411 } 00412 else if (size != m_prevVecSize) { 00413 idx = m_relFile.GetVectorIDX(size, &a_trans); 00414 m_relFile.ReleaseVectorIdx(m_prevVecIndex, m_prevVecSize, &a_trans); 00415 vecIdxOrSizeChanged = true; 00416 } 00417 00418 //log_DBG_m(dbg_DETAIL, " vecIdxOrSizeCahnged " << vecIdxOrSizeChanged 00419 // << " vecDataChanged " << vecDataChanged); 00420 if ( vecIdxOrSizeChanged 00421 || vecDataChanged) { // if something change write it t 00422 log_DBG_m(dbg_DETAIL, "W Copies : idx = " << idx << endl << 00423 cmn_HexDump(g_copyData_v, size * sizeof(fsc_Copy_t), sizeof(fsc_Copy_t), false) ); 00424 // write data to relative file 00425 m_relFile.WriteRec(idx, g_copyData_v, size, &a_trans); 00426 // cout << cmn_HexDump(g_copyData_v, size * sizeof(fsc_Copy_t) ) << endl; 00427 // m_vecIndex = idx; 00428 m_prevVecSize = size; 00429 m_prevVecIndex = idx; 00430 } 00431 // tel owner my profile 00432 00433 a_nextEntry.dlcType = dlc_Copy; 00434 a_nextEntry.vector.entryIdx = idx; 00435 a_nextEntry.vector.numOfElement = size; 00436 return vecIdxOrSizeChanged; 00437 }


| void fsc_CopyMgr::Dump | ( | ostream & | os | ) |
Definition at line 440 of file fsc_CopyMgr.cpp.
References dlc_NotUsed, log_FUNC_m, m_copy_p_l, and fsc_EntryMgr::m_prevVecIndex.
Referenced by fsc_Generation::Dump().
00440 { 00441 log_FUNC_m(Dump); 00442 os << "C Previous vector idx =" << m_prevVecIndex << endl; 00443 os << "p Number of copies =" << m_copy_p_l.size() << endl; 00444 // os << "y Previous num of cop. =" << m_prevVecSize << endl; 00445 00446 fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00447 for (;iter != m_copy_p_l.end(); ++iter) { 00448 if ((*iter)->m_nextEntry.dlcType == dlc_NotUsed) { 00449 os << " Reserved space for copy" << endl; 00450 } 00451 else { 00452 (*iter)->Dump(os); 00453 } 00454 } 00455 }

| bool fsc_CopyMgr::TreeWalk | ( | fsc_Collector & | a_collector | ) |
Definition at line 328 of file fsc_CopyMgr.cpp.
References log_FUNC_m, m_copy_p_l, and fsc_Collector::ProcObjCopyMgr().
Referenced by fsc_Generation::TreeWalk().
00328 { 00329 log_FUNC_m(TreeWalk); 00330 00331 if (!a_collector.ProcObjCopyMgr(this)){ 00332 return false; 00333 } 00334 fsc_Copy_p_l_i iter = m_copy_p_l.begin(); 00335 for (;iter != m_copy_p_l.end(); ++iter) { 00336 if (!(**iter).TreeWalk(a_collector)) { 00337 return false; 00338 } 00339 } 00340 return true; 00341 }


friend class ut_fsc_CopyMgr [friend] |
Definition at line 49 of file fsc_CopyMgr.h.
fio_RelFileTrans& fsc_CopyMgr::m_relFile [private] |
this is pointer to relative file "fsc_xxxx.lrf" object.
It's not need to delete it in destructor
Definition at line 69 of file fsc_CopyMgr.h.
Referenced by fsc_CopyMgr(), and Write2DB().
Definition at line 72 of file fsc_CopyMgr.h.
Referenced by AddSplit(), Dump(), fsc_CopyMgr(), GetCopiesPos(), Remove(), TreeWalk(), Write2DB(), and ~fsc_CopyMgr().
Macro to add class name member s_className.
Reimplemented from fsc_EntryMgr.
Definition at line 76 of file fsc_CopyMgr.h.
1.5.6