fsc_Copy Class Reference
[File System Catalog]

#include <fsc_Copy.h>

Inheritance diagram for fsc_Copy:

Inheritance graph
[legend]
Collaboration diagram for fsc_Copy:

Collaboration graph
[legend]

List of all members.


Detailed Description

<Description:> A more elaborate class description that describes all aspects of class usage etc.

Author:
Dejan Volk Lupo, HERMES SoftLab
See also:
<reference>

Definition at line 37 of file fsc_Copy.h.


Public Member Functions

 fsc_Copy ()
 Default constructor.
 fsc_Copy (fsc_MedPosMgr *a_medPosMgr_p, df_SplitInfo &a_splitInfo)
 Move media position instance from higher level to copy splitInfor is only for set common data.
 fsc_Copy (fsc_dlcType_e a_dclType, fsc_EntryMgr *a_entryMgr_p, ivd_DataType_t a_dataType)
 fsc_Copy (df_SplitInfo &a_splitInfo)
 fsc_Copy (fsc_Split *a_split_p)
 NOTE a_split_p must be used or deleted.
 fsc_Copy (const fsc_Copy_t &a_copy)
 ~fsc_Copy ()
sp_State_e AddSplit (fsc_Split *a_split_p, fsc_Split_p_l_i &a_possibleInsertPoint, fsc_Split_p_l_t &a_replacedSplit_p_l)
void AddSplit (fsc_Split_p_l_i &a_insertPoint, fsc_Split *a_split_p)
void Remove (ivd_MediaKey_t a_mediumKey, ivd_MedVolNum_t a_medVolNum, fsc_Split_p_l_t &a_replacedSplit_p_l)
 remove all entries from particular volume.
bool Remove (ivd_MediaKey_t a_mediumKey, ivd_MedVolNum_t a_medVolNum, UInt32_t a_blockOffs, fsc_Split_p_l_t &a_replacedSplit_p_l)
 Remove one particular entry.
bool isEqual (df_SplitInfo &a_splitInfo)
 check if current copy has common parts of data in its splits
bool isReorganized ()
void GetMediaPos (ivd_MediaPos_v_t &a_mediaPos_v, fsc_MigInfo_t &migInfo)
 Get all media position from copy.
void ReadMembers ()
 create and read next level members
bool Write2DB (fsc_Copy_t &a_copyData, fio_Transaction &a_trans)
 invoke next level write2DB and collect data for previous level
void Dump (ostream &os)
bool TreeWalk (fsc_Collector &a_collector)

Public Attributes

ivd_DataType_t m_dataType
 all data type that are stored in splits
bool m_reorganized
 log_CLASSID_m

Constructor & Destructor Documentation

fsc_Copy::fsc_Copy (  ) 

Default constructor.

Definition at line 37 of file fsc_Copy.cpp.

00038             : 
00039             fsc_Entry(),
00040             m_dataType(dlc_NotUsed),
00041             m_reorganized(false)
00042 {
00043 //    log_FUNC_m(fsc_Copy());
00044     // Empty
00045 }

fsc_Copy::fsc_Copy ( fsc_MedPosMgr a_medPosMgr_p,
df_SplitInfo a_splitInfo 
)

Move media position instance from higher level to copy splitInfor is only for set common data.

fsc_Copy::fsc_Copy ( fsc_dlcType_e  a_dclType,
fsc_EntryMgr a_entryMgr_p,
ivd_DataType_t  a_dataType 
)

Definition at line 48 of file fsc_Copy.cpp.

00052             :
00053 // fix bug 
00054             fsc_Entry(a_dclType, a_entryMgr_p),
00055             m_dataType(a_dataType),
00056             m_reorganized(false)
00057 {
00058 //    log_FUNC_m(fsc_Copy(fsc_dlcType_e, fsc_EntryMgr, ivd_DataType_t));
00059 }
//============================================================================//

fsc_Copy::fsc_Copy ( df_SplitInfo a_splitInfo  ) 

Definition at line 62 of file fsc_Copy.cpp.

References dlc_MediaPos, dlc_Split, fsc_Entry::InitNextEntry(), df_SplitInfo::lastSplit, and df_SplitInfo::splitOffset.

00063             :
00064             fsc_Entry(),
00065             m_dataType(a_splitInfo.dataType),
00066             m_reorganized(false)
00067 {
00068 //    log_FUNC_m(fsc_Copy(df_SplitInfo));
00069 
00070     if ( !a_splitInfo.lastSplit
00071        || a_splitInfo.splitOffset > 0) { //FIX  bug 680  if split then generate another empty
00072         fsc_Entry::InitNextEntry(dlc_Split, new fsc_SplitMgr(a_splitInfo));   
00073 
00074     }
00075     else {   // not last split create media position 
00076         fsc_Entry::InitNextEntry(dlc_MediaPos, new fsc_MedPosMgr(a_splitInfo));        
00077 
00078     }
00079 }
//============================================================================//

Here is the call graph for this function:

fsc_Copy::fsc_Copy ( fsc_Split a_split_p  ) 

NOTE a_split_p must be used or deleted.

Definition at line 82 of file fsc_Copy.cpp.

References dlc_MediaPos, dlc_Split, fsc_Entry::InitNextEntry(), fsc_Entry::m_entryMgr_p, fsc_Split::m_lastSplit, fsc_Split::m_offset, and NULL.

00083             :
00084             fsc_Entry(),
00085             m_dataType(a_split_p->m_dataType),
00086             m_reorganized(false)
00087 {
00088 //    log_FUNC_m(fsc_Copy(fsc_Split*));
00089     
00090     if ( !a_split_p->m_lastSplit
00091        || a_split_p->m_offset > 0) { //FIX  bug 680  if split then generate another empty
00092         fsc_Entry::InitNextEntry(dlc_Split, new fsc_SplitMgr(a_split_p));   
00093 
00094     }
00095     else {   // not last split use only media position 
00096 // FIX bug 832
00097         fsc_Entry::InitNextEntry(dlc_MediaPos, a_split_p->m_entryMgr_p);        
00098         a_split_p->m_entryMgr_p = NULL; // to prevent delete 
00099         delete a_split_p;
00100     }
00101 }
//============================================================================//

Here is the call graph for this function:

fsc_Copy::fsc_Copy ( const fsc_Copy_t a_copy  ) 

Definition at line 104 of file fsc_Copy.cpp.

00105             :
00106             fsc_Entry(a_copy.nextEntity),
00107 //            m_copyID(a_copy.copyID),
00108             m_dataType(a_copy.nextEntity.dataType),
00109             m_reorganized(false)
00110 {
00111 //    log_FUNC_m(fsc_Copy(fsc_Copy_t));
00112 }
//============================================================================//

fsc_Copy::~fsc_Copy (  ) 

Definition at line 115 of file fsc_Copy.cpp.

00116 {
00117 }


Member Function Documentation

sp_State_e fsc_Copy::AddSplit ( fsc_Split a_split_p,
fsc_Split_p_l_i a_possibleInsertPoint,
fsc_Split_p_l_t a_replacedSplit_p_l 
)

Definition at line 120 of file fsc_Copy.cpp.

References fsc_SplitMgr::AddSplit(), cmn_Num2Str(), dbg_DETAIL, dlc_MediaPos, dlc_Split, fsc_NextEntity_t::dlcType, fsc_Split::Dump(), ie_INVALID_ARG, fsc_MedPosMgr::IsItEqual(), log_DBG_m, log_FUNC_m, fsc_Entry::m_changed, fsc_Split::m_dataType, m_dataType, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, ReadMembers(), sp_ALREADY_ADDED, sp_INSERTTED, and sp_NEW_COPY.

Referenced by AddSplit().

00122                                                                      {
00123 
00124     ReadMembers();
00125 
00126     // check if some new data type is add
00127     ivd_DataType_t dataType = m_dataType | a_split_p->m_dataType;
00128     
00129     switch (m_nextEntry.dlcType) {
00130         case dlc_Split : {
00131                 if ( dataType != m_dataType) {
00132                     m_dataType = dataType;
00133                     m_changed  = true;
00134                 }
00135                 fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00136                 return p->AddSplit(a_split_p, a_possibleInsertPoint, a_replacedSplit_p_l);
00137             }
00138             break;
00139 
00140         case dlc_MediaPos : {  
00141                 fsc_MedPosMgr* p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00142                 if (p->IsItEqual(*static_cast<fsc_MedPosMgr*>(a_split_p->m_entryMgr_p))) {
00143                     log_FUNC_m(AddSplit);
00144                     // correct data type if neccesary.
00145                     // because of bug 4491. 
00146                     // bug when data type is changed before copy (split) is realocated,
00147                     // so its realocated data type is changed.
00148                     log_DBG_m(dbg_DETAIL, "m_dataType: " << m_dataType
00149                                         << ", a_split_p->m_dataType: " << a_split_p->m_dataType);
00150                     if (m_dataType != a_split_p->m_dataType) {
00151                         m_dataType = a_split_p->m_dataType; 
00152                         m_changed  = true;
00153                     }
00154                     return sp_ALREADY_ADDED;
00155                 }
00156                 return sp_NEW_COPY;
00157             }
00158             break;
00159 
00160         default:
00161             stringstream dump;
00162             a_split_p->Dump(dump);
00163             log_FUNC_m(AddSplit);
00164             throw ivd_InternalError(ie_INVALID_ARG, 
00165                 "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType) + dump.str(), true);
00166             break;
00167     }
00168     return sp_INSERTTED;
00169 }

Here is the call graph for this function:

Here is the caller graph for this function:

void fsc_Copy::AddSplit ( fsc_Split_p_l_i a_insertPoint,
fsc_Split a_split_p 
)

Definition at line 172 of file fsc_Copy.cpp.

References AddSplit(), cmn_Num2Str(), dlc_Split, fsc_NextEntity_t::dlcType, fsc_Split::Dump(), ie_INVALID_ARG, log_FUNC_m, fsc_Entry::m_changed, fsc_Split::m_dataType, m_dataType, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, and fsc_SplitMgr::m_split_p_l.

00173                                                     {
00174 
00175 //    log_FUNC_m(AddSplit(fsc_Split_p_l_i&, fsc_Split*));
00176 
00177 // it is called after upper AddSplit(...) method so it already has members
00178 //    ReadMembers();
00179 
00180     // check if some new data type is add
00181     ivd_DataType_t dataType = m_dataType | a_split_p->m_dataType; 
00182     if ( dataType != m_dataType) {
00183         m_dataType = dataType;
00184         m_changed  = true;
00185     }
00186 
00187     switch (m_nextEntry.dlcType) {
00188     case dlc_Split : {
00189             fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00190             p->m_split_p_l.insert(a_insertPoint, a_split_p);
00191         }
00192         break;
00193 
00194     default:
00195         log_FUNC_m(AddSplit(fsc_Split_p_l_i&, fsc_Split*));
00196         stringstream dump;
00197         a_split_p->Dump(dump);
00198         throw ivd_InternalError(ie_INVALID_ARG, 
00199             "Only splits are alowed here. dlcType =" +
00200                 cmn_Num2Str((int)m_nextEntry.dlcType) +
00201                 dump.str(), true);
00202         break;
00203     }
00204 }

Here is the call graph for this function:

void fsc_Copy::Remove ( ivd_MediaKey_t  a_mediumKey,
ivd_MedVolNum_t  a_medVolNum,
fsc_Split_p_l_t a_replacedSplit_p_l 
)

remove all entries from particular volume.

Definition at line 207 of file fsc_Copy.cpp.

References cmn_Num2Str(), dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, ie_INVALID_ARG, log_FUNC_m, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, m_reorganized, ReadMembers(), fsc_MedPosMgr::Remove(), and fsc_SplitMgr::Remove().

Referenced by Remove().

00209                                                             {
00210     log_FUNC_m(Remove);
00211 
00212     ReadMembers();
00213 
00214     switch (m_nextEntry.dlcType) {
00215 
00216     case dlc_NotUsed :
00217         return;
00218 
00219     case dlc_Split : {
00220                 fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00221                 m_reorganized = p->Remove(a_mediumKey, a_medVolNum, a_replacedSplit_p_l);
00222                 return;
00223             }
00224             break;
00225 
00226         case dlc_MediaPos : {
00227                 fsc_MedPosMgr* p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00228                 p->Remove(a_mediumKey, a_medVolNum);        
00229                 return;
00230             }
00231             break;
00232 
00233         default:
00234             throw ivd_InternalError(ie_INVALID_ARG, 
00235                 "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType), true);
00236             break;
00237     }
00238 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool fsc_Copy::Remove ( ivd_MediaKey_t  a_mediumKey,
ivd_MedVolNum_t  a_medVolNum,
UInt32_t  a_blockOffs,
fsc_Split_p_l_t a_replacedSplit_p_l 
)

Remove one particular entry.

Definition at line 241 of file fsc_Copy.cpp.

References cmn_Num2Str(), dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, ie_INVALID_ARG, log_FUNC_m, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, m_reorganized, ReadMembers(), fsc_MedPosMgr::Remove(), fsc_SplitMgr::Remove(), and Remove().

00244                                                             {
00245     log_FUNC_m(Remove);
00246     
00247     ReadMembers();
00248 
00249     switch (m_nextEntry.dlcType) {
00250 
00251     case dlc_NotUsed :
00252         return false;
00253 
00254     case dlc_Split : {
00255                 fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00256                 m_reorganized = p->Remove(a_mediumKey, a_medVolNum, a_blockOffs, a_replacedSplit_p_l);
00257                 return m_reorganized;
00258             }
00259             break;
00260 
00261         case dlc_MediaPos : {
00262                 fsc_MedPosMgr* p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00263                 return p->Remove(a_mediumKey, a_medVolNum, a_blockOffs);
00264             }
00265             break;
00266 
00267         default:
00268             throw ivd_InternalError(ie_INVALID_ARG, 
00269                 "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType), true);
00270             break;
00271     }
00272     return false;
00273 }

Here is the call graph for this function:

bool fsc_Copy::isEqual ( df_SplitInfo a_splitInfo  ) 

check if current copy has common parts of data in its splits

check if current copy is equal to new to insert it

bool fsc_Copy::isReorganized (  )  [inline]

Definition at line 96 of file fsc_Copy.h.

References m_reorganized.

00096 { return m_reorganized; };

void fsc_Copy::GetMediaPos ( ivd_MediaPos_v_t a_mediaPos_v,
fsc_MigInfo_t migInfo 
)

Get all media position from copy.

Definition at line 338 of file fsc_Copy.cpp.

References cmn_Num2Str(), ivd_MediaPos_t::dataType, dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, fsc_MedPosMgr::GetMediaPos(), fsc_SplitMgr::GetMediaPos(), ie_INVALID_ARG, log_FUNC_m, fsc_MigInfo_t::m_dataType, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, fsc_MigInfo_t::m_size, ReadMembers(), ivd_MediaPos_t::splitOffset, and ivd_MediaPos_t::splitSize.

Referenced by fsc_CopyMgr::GetCopiesPos().

00338                                                                                  {
00339 //    log_FUNC_m(GetMediaPos);
00340 
00341     ReadMembers();
00342 
00343     switch (m_nextEntry.dlcType) {
00344     case dlc_NotUsed :
00345         break;
00346 
00347     case dlc_Split : { // TODO check copy ID and no of copies
00348         fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00349         p->GetMediaPos(a_mediaPos_v, migInfo);
00350         }
00351         break;
00352 
00353     case dlc_MediaPos : {  
00354         a_mediaPos_v.resize(1); // one split
00355         fsc_MedPosMgr* p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00356         ivd_MediaPos_t &mediaPos = a_mediaPos_v[0];
00357         p->GetMediaPos(mediaPos);
00358         // in case that copy hold media location than 
00359         // size and data type is get from migInfo
00360         mediaPos.splitOffset = 0;   
00361         mediaPos.splitSize   = migInfo.m_size;
00362         mediaPos.dataType    = migInfo.m_dataType;
00363         }
00364         break;
00365 
00366     default:
00367         log_FUNC_m(GetMediaPos);
00368         throw ivd_InternalError(ie_INVALID_ARG, 
00369             "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType), true);
00370         break;
00371     }
00372 }

Here is the call graph for this function:

Here is the caller graph for this function:

void fsc_Copy::ReadMembers (  ) 

create and read next level members

Definition at line 409 of file fsc_Copy.cpp.

References cmn_Num2Str(), dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, fsc_Vector_t::entryIdx, ie_INVALID_ARG, log_FUNC_m, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, NULL, fsc_Vector_t::numOfElement, and fsc_NextEntity_t::vector.

Referenced by AddSplit(), Dump(), GetMediaPos(), Remove(), and TreeWalk().

00409                            {
00410 
00411     if (  m_entryMgr_p == NULL) {
00412             switch (m_nextEntry.dlcType) {
00413             case dlc_NotUsed :
00414                 break;
00415 //            case    dlc_Chunk,
00416             case dlc_Split :
00417                 m_entryMgr_p = new fsc_SplitMgr(m_nextEntry.vector.numOfElement, 
00418                                                 m_nextEntry.vector.entryIdx);
00419 
00420                 break;
00421 
00422             case dlc_MediaPos :
00423                 m_entryMgr_p = new fsc_MedPosMgr(m_nextEntry);
00424 
00425                 break;
00426 
00427             default:
00428                 log_FUNC_m(ReadMembers);
00429                 throw ivd_InternalError(ie_INVALID_ARG, 
00430                     "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType), true);
00431                 break;
00432             }
00433 //        }
00434     }
00435 
00436 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool fsc_Copy::Write2DB ( fsc_Copy_t a_copyData,
fio_Transaction a_trans 
)

invoke next level write2DB and collect data for previous level

Definition at line 439 of file fsc_Copy.cpp.

References cmn_Num2Str(), fsc_NextEntity_t::dataType, dbg_DETAIL, dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, ie_INVALID_ARG, log_DBG_m, log_FUNC_m, fsc_Entry::m_changed, m_dataType, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, fsc_Copy_t::nextEntity, NULL, fsc_Copy_t::reserved, fsc_MedPosMgr::Write2DB(), and fsc_SplitMgr::Write2DB().

Referenced by fsc_CopyMgr::Write2DB().

00440                                                   {
00441     log_FUNC_m(Write2DB);
00442 //    log_DBG_m(dbg_DETAIL, "fsc_Copy::Write2DB ");
00443 
00444     bool vecIdxOrSizeChanged  = false;
00445 
00446     if (m_entryMgr_p != NULL) {
00447 
00448         log_DBG_m(dbg_DETAIL, " m_nextEntry.dlcType = " << (int)m_nextEntry.dlcType );
00449         // Write and check if changed next entryes first
00450         switch (m_nextEntry.dlcType) {
00451 
00452         case dlc_NotUsed : 
00453             a_copyData.nextEntity = m_nextEntry;
00454 //            memset(&a_copyData, 0, sizeof(fsc_Copy_t));
00455             break;
00456 
00457         case dlc_Split : {
00458                 fsc_SplitMgr *splitMgr_p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00459                 // update next level data 
00460                 vecIdxOrSizeChanged = splitMgr_p->Write2DB(a_copyData.nextEntity,
00461                                                            a_trans);
00462                 m_nextEntry = a_copyData.nextEntity;
00463             }
00464             break;
00465 
00466         case dlc_MediaPos : {
00467                 fsc_MedPosMgr *medPosMgr_p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00468                 vecIdxOrSizeChanged = medPosMgr_p->Write2DB(a_copyData.nextEntity);
00469                 m_nextEntry = a_copyData.nextEntity;
00470             }
00471             break;
00472 
00473         default:
00474             log_FUNC_m(Write2DB);
00475             throw ivd_InternalError(ie_INVALID_ARG, 
00476                 "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType), true);
00477             break;
00478         }
00479     }
00480     else { // index and size are the same as at construct time
00481         log_DBG_m(dbg_DETAIL, "    m_entryMgr_p == NULL");
00482         a_copyData.nextEntity = m_nextEntry;
00483     }
00484 //    a_copyData.nextEntity.Dbg();
00485 
00486     //set data, cause of moving vector. Doesn't mather if was not changed.
00487     a_copyData.nextEntity.dataType = m_dataType;
00488     a_copyData.reserved = 0;
00489 
00490     // if any data changed send message that was changed
00491 //    log_DBG_m(dbg_DETAIL, " vecIdxOrSizeCahnged " << vecIdxOrSizeChanged
00492 //                       << " m_changed " << m_changed);
00493     if (  vecIdxOrSizeChanged 
00494        || m_changed) {
00495         m_changed = false;
00496         return true;
00497     }
00498     return false;
00499 }

Here is the call graph for this function:

Here is the caller graph for this function:

void fsc_Copy::Dump ( ostream &  os  ) 

Definition at line 502 of file fsc_Copy.cpp.

References cmn_GetMigFlags(), dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, fsc_MedPosMgr::Dump(), fsc_SplitMgr::Dump(), log_FUNC_m, m_dataType, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, and ReadMembers().

Referenced by fsc_CopyMgr::GetCopiesPos().

00502                                {
00503     log_FUNC_m(Dump);
00504 
00505     ReadMembers();
00506     os << "           Data type: "  << hex << m_dataType <<  dec << "  "
00507         << cmn_GetMigFlags(m_dataType) << endl;
00508 
00509     switch (m_nextEntry.dlcType) {
00510     case dlc_NotUsed :
00511         os << "               Copy not used" << endl;
00512         break;
00513 
00514     case dlc_Split : { // TODO check copy ID and no of copies
00515         fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00516         p->Dump(os);
00517         }
00518         break;
00519 
00520     case dlc_MediaPos : {  
00521         fsc_MedPosMgr* p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00522         p->Dump(os);
00523         }
00524         break;
00525 
00526     default:
00527         os << "               Wrong dlcType "  << (int)m_nextEntry.dlcType << endl;
00528         break;
00529     }
00530 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool fsc_Copy::TreeWalk ( fsc_Collector a_collector  ) 

Definition at line 375 of file fsc_Copy.cpp.

References cmn_Num2Str(), dlc_MediaPos, dlc_NotUsed, dlc_Split, fsc_NextEntity_t::dlcType, ie_INVALID_ARG, log_FUNC_m, fsc_Entry::m_entryMgr_p, fsc_Entry::m_nextEntry, fsc_Collector::ProcObjCopy(), ReadMembers(), fsc_MedPosMgr::TreeWalk(), and fsc_SplitMgr::TreeWalk().

00375                                                     {
00376 
00377     ReadMembers();
00378 
00379     if (!a_collector.ProcObjCopy(this)){
00380         return false;
00381     }
00382 
00383     switch (m_nextEntry.dlcType) {
00384     case dlc_NotUsed :
00385         break;
00386 
00387     case dlc_Split : { // TODO check copy ID and no of copies
00388         fsc_SplitMgr* p = static_cast<fsc_SplitMgr*>(m_entryMgr_p);
00389         return p->TreeWalk(a_collector);
00390         }
00391         break;
00392 
00393     case dlc_MediaPos : {  
00394         fsc_MedPosMgr* p = static_cast<fsc_MedPosMgr*>(m_entryMgr_p);
00395         return p->TreeWalk(a_collector);
00396         }
00397         break;
00398 
00399     default:
00400         log_FUNC_m(TreeWalk);
00401         throw ivd_InternalError(ie_INVALID_ARG, 
00402             "Wrong dlcType =" + cmn_Num2Str((int)m_nextEntry.dlcType), true);
00403         break;
00404     }
00405     return true;
00406 }

Here is the call graph for this function:


Member Data Documentation

all data type that are stored in splits

Definition at line 63 of file fsc_Copy.h.

Referenced by AddSplit(), Dump(), fsc_CopyMgr::GetCopiesPos(), and Write2DB().

Definition at line 64 of file fsc_Copy.h.

Referenced by isReorganized(), and Remove().

Reimplemented from fsc_Entry.

Definition at line 67 of file fsc_Copy.h.


The documentation for this class was generated from the following files:

Generated on Mon Feb 27 19:19:26 2012 for OPENARCHIVE by  doxygen 1.5.6