#include <df.h>


Definition at line 1455 of file df.h.
Public Member Functions | |
| df_RecReader (df_BlockProxy *a_blockProxy, const cmn_UUID_t &a_volumeID=cmn_UUID_t(string(""))) | |
| Default constructor. | |
| virtual | ~df_RecReader () |
| UInt32_t | Unpack (const UInt8_t *a_dataBlock_p, UInt32_t a_curBlockID) |
| UInt32_t | Unpack () |
| return type of last read record. | |
| void | Abort () |
| void | Reset (bool a_resetBlockProxy=true, bool a_reparseBlockHdr=false) |
| bool | IsNextRecordRaw () const |
| UInt32_t | GetBlkSize () const |
| UInt32_t | GetCurBlockUsed () const |
| UInt32_t | GetCurBlockPos () const |
| UInt32_t | GetBlockID () const |
| UInt32_t | GetLastKnownGoodBlockID () const |
| bool | IsCurBlockPtrNull () |
| UInt32_t | GetRecNum () const |
| UInt32_t | GetBlockNum () const |
| const df_RecCmn_t * | PositionToRecord (UInt32_t a_recType) |
| This function is intended for positioning to the first occurance of a specific record type inside the current block from the current position. | |
| UInt32_t | GetPrevRecType () const |
| virtual void | ProcEndOfInput () |
| method ProcEndOfInput() must be called at the end of input when block per block parsing is used (migration, FRI check before wirtten to media. | |
Static Public Member Functions | |
| static const df_RecCmn_t * | VerifiedRecCmn (const UInt8_t *a_buffer, UInt32_t &a_curRecNum, UInt32_t a_curBlockType, UInt32_t &a_prevRecType, UInt32_t a_lastGoodBlock) |
| static bool | VerifyRecHeader (const UInt8_t *a_buffer, UInt32_t a_recType, UInt32_t a_recSeqNum, UInt32_t a_recSize) |
Protected Member Functions | |
| void | SetNewDataBlock (const UInt8_t *a_dataBlock_p, UInt32_t a_curBlockID=0) |
| bool | IsBlkPerBlkUnpacking () |
| bool | DoesBlockContainNewMigration () |
| void | SetFindMode () |
Protected Attributes | |
| UInt32_t | m_curRecType |
| UInt32_t | m_prevRecType |
| UInt64_t | m_curStreamLeft |
| How much stream has to be read? | |
| UInt32_t | m_curStreamType |
| follow members are used in derived classes. | |
| string | m_curStreamName |
| UTF-8 name of the current stream. | |
| const cmn_UUID_t | m_volumeID |
| parsing data of volume | |
| bool | m_isVolumeIDRegular |
| cmn_UUID_t | m_currVolID |
| set when FRI is read | |
| bool | m_ignoreCorruptedMetaData |
Private Member Functions | |
| virtual bool | HandleDFError (const ivd_DFError &ie) |
| bool | LocateNextFile () |
| void | GetNextRecord () |
| void | GetNextRawRecord () |
| virtual void | ProcBlock (const UInt8_t *a_dataBlock) |
| virtual void | ProcRawBlock (const UInt8_t *a_dataBlock) |
| virtual void | ProcRecFileHdr (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecFileEnd (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecBSStart (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecEmbData (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecRawData (const UInt8_t *a_block_p) |
| virtual void | ProcRecBSEnd (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecFRIStart (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecFRIEnd (const df_RecCmn_t *a_recCmn_p) |
| virtual void | ProcRecFRISpInfo (const df_RecCmn_t *a_recCmn_p) |
| virtual void | PrepareDataStreamUnpacker () |
| void | FRIStartCheck (const df_RecCmn_t *a_recCmn_p) |
| void | FRIEndCheck (const df_RecCmn_t *a_recCmn_p) |
Private Attributes | |
| log_CLASSID_m | |
| Macro to add class name member s_className. | |
| UInt32_t | m_curBlockPos |
| UInt32_t | m_recNum |
| auto_ptr< df_BlockProxy > | m_blockProxy |
| const df_RecCmn_t * | m_recCmn_p |
| bool | m_findMode |
| bool | m_blkPerBlkUnpacking |
Friends | |
| IVD_DF_DECL_d ostream & | operator<< (ostream &a_os, const df_RecReader &o) |
| df_RecReader::df_RecReader | ( | df_BlockProxy * | a_blockProxy, | |
| const cmn_UUID_t & | a_volumeID = cmn_UUID_t(string("")) | |||
| ) |
Default constructor.
Definition at line 79 of file df_recreader.cpp.
References blk_FRI_c, cmn_GetEnvVariable(), cmn_StrUpperCase(), dbg_LOW, dbg_NORM, df_ignoreCorruptedMetaData_c(), log_DBG_m, log_FUNC_m, m_blockProxy, m_ignoreCorruptedMetaData, m_prevRecType, and rec_ExpectFRIStart_c.
00081 : 00082 m_curRecType(rec_NoRec_c), 00083 m_prevRecType(rec_NoRec_c), 00084 m_curStreamLeft(0), 00085 m_curStreamType(0), 00086 m_volumeID(a_volumeID), 00087 m_isVolumeIDRegular(!m_volumeID.IsNull()), 00088 m_currVolID(cmn_UUID_t(string(""))), 00089 m_ignoreCorruptedMetaData(false), 00090 m_curBlockPos(0), 00091 m_recNum(0), 00092 m_blockProxy(a_blockProxy), 00093 m_recCmn_p(NULL), 00094 m_findMode(false), 00095 m_blkPerBlkUnpacking(false) { 00096 00097 log_FUNC_m(df_RecReader); 00098 00099 string verifyPos = cmn_GetEnvVariable(df_ignoreCorruptedMetaData_c); 00100 if (verifyPos.length() > 0) { 00101 log_DBG_m(dbg_LOW, df_ignoreCorruptedMetaData_c << " = " << verifyPos << "."); 00102 cmn_StrUpperCase(verifyPos); 00103 00104 if (verifyPos.compare("yes") == 0) { 00105 m_ignoreCorruptedMetaData = true; 00106 } 00107 else if (verifyPos.compare("no") == 0) { 00108 m_ignoreCorruptedMetaData = false; 00109 } 00110 else { 00111 log_DBG_m(dbg_LOW, 00112 df_ignoreCorruptedMetaData_c << " defined but contains unexpected contents."); 00113 } 00114 } 00115 00116 if (m_blockProxy->IsBlkType(blk_FRI_c)) { 00117 log_DBG_m(dbg_NORM, "FRI Blocks --> Next expected record is FRIS."); 00118 m_prevRecType = rec_ExpectFRIStart_c; 00119 } 00120 log_DBG_m(dbg_NORM, "df_RecReader obj: " << *this); 00121 }

| virtual df_RecReader::~df_RecReader | ( | ) | [inline, virtual] |
Definition at line 235 of file df_recreader.cpp.
References log_FUNC_A_m, m_blkPerBlkUnpacking, SetNewDataBlock(), and Unpack().
Referenced by i_FSC_i::CheckWithMedVolume(), i_HSM_i::EfficientRecall(), i_FSC_i::FSCRecovery(), i_FSC_i::InsertSplitFromFRIBlock(), and bea_RecallThread::Recall().
00235 { 00236 log_FUNC_A_m(Unpack, "id=" << a_curBlockID); 00237 m_blkPerBlkUnpacking = true; 00238 SetNewDataBlock(a_dataBlock_p, a_curBlockID); 00239 return Unpack(); 00240 }


| UInt32_t df_RecReader::Unpack | ( | ) |
return type of last read record.
Used in FSC update. to check rec_FRIEnd_c
Definition at line 243 of file df_recreader.cpp.
References blk_FRI_c, cmn_Num2Str(), df_RecEmbeddedData_t::data, dbg_DETAIL, dbg_LOW, dbg_NORM, df_ST_ALTDATA, df_ST_META, FRIEndCheck(), FRIStartCheck(), GetBlkSize(), GetLastKnownGoodBlockID(), GetNextRecord(), HandleDFError(), ie_DF_INVSTREAMFMT, IsBlkPerBlkUnpacking(), IsCurBlockPtrNull(), LocateNextFile(), log_DBG_m, log_ERR_m, log_FUNC_m, m_blockProxy, m_curRecType, m_curStreamLeft, m_curStreamName, m_curStreamType, m_findMode, m_ignoreCorruptedMetaData, m_prevRecType, m_recCmn_p, m_recNum, ntoh(), PrepareDataStreamUnpacker(), ProcEndOfInput(), ProcRecBSEnd(), ProcRecBSStart(), ProcRecEmbData(), ProcRecFileEnd(), ProcRecFileHdr(), ProcRecFRIEnd(), ProcRecFRISpInfo(), ProcRecFRIStart(), ProcRecRawData(), rec_BSEnd_c, rec_BSStart_c, rec_Data_c, rec_EmbData_c, rec_FileEnd_c, rec_FileHdr_c, rec_FRIEnd_c, rec_FRISpInfo_c, rec_FRIStart_c, rec_NoRec_c, ivd_VarData_t::size, df_RecByteStreamEnd_t::streamSize, df_RecByteStreamEnd_t::streamType, df_RecEmbeddedData_t::streamType, and df_RecCmn_t::type.
Referenced by Unpack().
00243 { 00244 log_FUNC_m(Unpack); 00245 00246 // This loop exits by break when the input stream runs out. 00247 while (true) { 00248 try { 00249 if (m_findMode) { 00250 // In find mode we try to position to the next 00251 // file header. 00252 if (!LocateNextFile()) { 00253 // File not yet found 00254 if (IsCurBlockPtrNull()) { 00255 // end of input stream 00256 // exit while loop 00257 break; 00258 } 00259 else { 00260 // file header not found yet, but 00261 // there's more input available 00262 continue; 00263 } 00264 } 00265 } 00266 00267 GetNextRecord(); 00268 00269 if (m_curRecType == rec_NoRec_c) { 00270 // NOTE: rec_NoRec_c is the iternal indicator 00271 // that the input stream is exhausted. 00272 if ( ! IsBlkPerBlkUnpacking() ) { 00273 ProcEndOfInput(); 00274 } 00275 // exit while loop 00276 break; 00277 } 00278 else { 00279 string recType( 00280 reinterpret_cast<char*>(&(m_curRecType)), 00281 sizeof(m_curRecType) ); 00282 log_DBG_m(dbg_DETAIL, "RECORD TYPE: " << recType); 00283 } 00284 00285 if (m_curRecType == rec_FileHdr_c) { 00286 ProcRecFileHdr(m_recCmn_p); 00287 } 00288 else if (m_curRecType == rec_FileEnd_c) { 00289 ProcRecFileEnd(m_recCmn_p); 00290 } 00291 else if (m_curRecType == rec_BSStart_c) { 00292 PrepareDataStreamUnpacker(); 00293 ProcRecBSStart(m_recCmn_p); 00294 } 00295 else if (m_curRecType == rec_EmbData_c) { 00296 const df_RecEmbeddedData_t *eData_p 00297 = df_GetSpecificRec<df_RecEmbeddedData_t>(m_recCmn_p); 00298 00299 if (m_curStreamType != 0) { 00300 if (ntoh(eData_p->streamType) != m_curStreamType) { 00301 log_FUNC_m(Unpack); 00302 throw ivd_DFError(ie_DF_INVSTREAMFMT, 00303 GetLastKnownGoodBlockID(), 00304 "EDta, but not from current stream:" 00305 " strType=" + cmn_Num2Str(m_curStreamType) + 00306 ", strName=" + m_curStreamName + 00307 ", strLeft=" + cmn_Num2Str(m_curStreamLeft)); 00308 } 00309 UInt32_t embSize = ntoh(eData_p->data.size); 00310 if (embSize == 0 || embSize > m_curStreamLeft) { 00311 log_FUNC_m(Unpack); 00312 throw ivd_DFError(ie_DF_INVSTREAMFMT, 00313 GetLastKnownGoodBlockID(), 00314 "EDta - less/more embedded than expected:" 00315 " embSize=" + cmn_Num2Str(embSize) + 00316 ", strLeft=" + cmn_Num2Str(m_curStreamLeft)); 00317 } 00318 00319 m_curStreamLeft -= embSize; 00320 } 00321 ProcRecEmbData(m_recCmn_p); 00322 } 00323 else if (m_curRecType == rec_Data_c) { 00324 m_curStreamLeft -= GetBlkSize(); 00325 ProcRecRawData(m_blockProxy->GetData()); 00326 } 00327 else if (m_curRecType == rec_BSEnd_c) { 00328 const df_RecByteStreamEnd_t *bse_p 00329 = df_GetSpecificRec<df_RecByteStreamEnd_t>(m_recCmn_p); 00330 00331 if (m_curStreamType != 0) { 00332 if (ntoh(bse_p->streamType) != m_curStreamType) { 00333 log_FUNC_m(Unpack); 00334 throw ivd_DFError(ie_DF_INVSTREAMFMT, 00335 GetLastKnownGoodBlockID(), 00336 string("BSEnd, but not from current stream:" 00337 " Stream info : " 00338 " Name=") + m_curStreamName 00339 + ", got Type=" + cmn_Num2Str(ntoh(bse_p->streamType)) 00340 + ", expected Type=" + cmn_Num2Str(m_curStreamType) 00341 + ", Left=" + cmn_Num2Str(m_curStreamLeft) 00342 + ", Size=" + cmn_Num2Str(ntoh(bse_p->streamSize))); 00343 } 00344 /* Only BSS and BSE is stored in FRI at alternate data stream. 00345 But older stream contain ADS data too. 00346 So m_stremLeft could be as large as whole ADS. 00347 */ 00348 if (m_curStreamLeft > 0 00349 && !( m_curStreamType == df_ST_ALTDATA // we do not have ADS 00350 && m_blockProxy->IsBlkType(blk_FRI_c) // or we do not have a FRI block 00351 && m_curStreamLeft == ntoh(bse_p->streamSize) // or no data written 00352 ) 00353 ) { 00354 log_FUNC_m(Unpack); 00355 if ( m_ignoreCorruptedMetaData && (m_curStreamType == df_ST_META)) { 00356 log_ERR_m( "Incomplete meta data stream ignored. " 00357 << " FRI Record SeqNum=" << m_recNum 00358 << " this is the bad record. " 00359 << "Search around this in ivd_df --FRI --recfull --rechdr output." 00360 << " Stream info : Name=" << m_curStreamName 00361 << ", Type=" << cmn_Num2Str(m_curStreamType) 00362 << ", Left=" << cmn_Num2Str(m_curStreamLeft) 00363 << ", Size=" << cmn_Num2Str(ntoh(bse_p->streamSize))); 00364 } 00365 else { 00366 throw ivd_DFError(ie_DF_INVSTREAMFMT, 00367 GetLastKnownGoodBlockID(), 00368 "BSEnd, but we expect more data." 00369 " Stream info : " 00370 " Name=" + m_curStreamName + 00371 + ", Type=" + cmn_Num2Str(m_curStreamType) 00372 + ", Left=" + cmn_Num2Str(m_curStreamLeft) 00373 + ", Size=" + cmn_Num2Str(ntoh(bse_p->streamSize))); 00374 } 00375 } 00376 00377 } 00378 ProcRecBSEnd(m_recCmn_p); 00379 m_curStreamLeft = 0; 00380 m_curStreamType = 0; 00381 m_curStreamName.clear(); 00382 } 00383 else if (m_curRecType == rec_FRIStart_c) { 00384 FRIStartCheck(m_recCmn_p); 00385 ProcRecFRIStart(m_recCmn_p); 00386 } 00387 else if (m_curRecType == rec_FRIEnd_c) { 00388 FRIEndCheck(m_recCmn_p); 00389 ProcRecFRIEnd(m_recCmn_p); 00390 } 00391 else if (m_curRecType == rec_FRISpInfo_c) { 00392 ProcRecFRISpInfo(m_recCmn_p); 00393 } 00394 else { 00395 log_FUNC_m(Unpack); 00396 throw ivd_DFError( 00397 ie_DF_INVSTREAMFMT, 00398 GetLastKnownGoodBlockID(), 00399 "Unknown record type:" 00400 "strType=" + cmn_Num2Str(m_recCmn_p->type)); 00401 } 00402 } 00403 catch(const ivd_DFError& ie) { 00404 if (HandleDFError(ie)) { 00405 log_DBG_m(dbg_LOW, "DF exception handled. Continue processing data."); 00406 //continue; 00407 } 00408 else { 00409 log_DBG_m(dbg_NORM, "DF exception not handled. Re-throwing."); 00410 throw; 00411 } 00412 } 00413 }// while (true) 00414 00415 return m_prevRecType; 00416 }


| void df_RecReader::Abort | ( | ) |
| void df_RecReader::Reset | ( | bool | a_resetBlockProxy = true, |
|
| bool | a_reparseBlockHdr = false | |||
| ) |
Definition at line 126 of file df_recreader.cpp.
References log_FUNC_m, m_blockProxy, m_curBlockPos, m_curRecType, m_curStreamLeft, m_curStreamType, m_prevRecType, m_recCmn_p, m_recNum, NULL, and rec_NoRec_c.
Referenced by df_FRIDistiller::HandleDFError(), df_FRIDistiller::ProcRecRawData(), and df_Filter::Reset().
00126 { 00127 00128 log_FUNC_m(Reset); 00129 00130 m_recCmn_p = NULL, 00131 m_curRecType = rec_NoRec_c, 00132 m_prevRecType = rec_NoRec_c, 00133 m_curBlockPos = sizeof(df_BlockHeader_t), 00134 m_recNum = 0, 00135 m_curStreamLeft = 0, 00136 m_curStreamType = 0; 00137 00138 if (a_resetBlockProxy) { 00139 m_blockProxy->Reset(); 00140 if (a_reparseBlockHdr) { 00141 m_blockProxy->ParseBlockHeader(); 00142 } 00143 } 00144 }

| const df_RecCmn_t * df_RecReader::VerifiedRecCmn | ( | const UInt8_t * | a_buffer, | |
| UInt32_t & | a_curRecNum, | |||
| UInt32_t | a_curBlockType, | |||
| UInt32_t & | a_prevRecType, | |||
| UInt32_t | a_lastGoodBlock | |||
| ) | [static] |
Definition at line 469 of file df_recreader.cpp.
References cmn_Num2Str(), df_IsValidPredecessor(), df_RF_CONTINUED, df_RecCmn_t::flags, ie_DF_INVRECCOOKIE, ie_DF_INVRECSEQNUM, ie_DF_INVSEQ, IsRecordCookie(), log_FUNC_m, df_RecCmn_t::magicCookie, ntoh(), rec_NoRec_c, df_RecCmn_t::seqNum, and df_RecCmn_t::type.
Referenced by GetNextRecord(), and bea_FRI::ReadFRIStart().
00474 { 00475 00476 00477 const df_RecCmn_t* recCmn_p = 00478 reinterpret_cast<const df_RecCmn_t*>(a_buffer); 00479 00480 // -- CHECKING MAGIC COOKIE -- 00481 00482 if (!IsRecordCookie(recCmn_p->magicCookie)) { 00483 log_FUNC_m(VerifiedRecCmn); 00484 throw ivd_DFError( 00485 ie_DF_INVRECCOOKIE, 00486 a_lastGoodBlock, 00487 "Got=" + 00488 string((const char*)recCmn_p->magicCookie, 00489 sizeof(recCmn_p->magicCookie)) ); 00490 }; 00491 00492 // -- CHECKING SEQUENCE NUMBER -- 00493 00494 UInt32_t curRecNum = ntoh(recCmn_p->seqNum); 00495 UInt32_t curRecFlags = ntoh(recCmn_p->flags); 00496 // if this is first record - set recNum appropriately 00497 if (a_curRecNum == 0) { 00498 a_curRecNum = curRecNum; 00499 } 00500 else if (curRecNum == 1) { // start of new migration: reset counter 00501 a_curRecNum = 1; 00502 a_prevRecType = rec_NoRec_c; 00503 } 00504 else if ( (curRecFlags & df_RF_CONTINUED) != 0) { 00505 // Split in the middle of the volume. 00506 // Reset block number and type 00507 a_curRecNum = curRecNum; 00508 a_prevRecType = rec_NoRec_c; 00509 } 00510 else { 00511 a_curRecNum++; 00512 if (curRecNum != a_curRecNum) { 00513 log_FUNC_m(VerifiedRecCmn); 00514 throw ivd_DFError( 00515 ie_DF_INVRECSEQNUM, 00516 a_lastGoodBlock, 00517 "Got=" + cmn_Num2Str(curRecNum) + 00518 ", expected=" + cmn_Num2Str(a_curRecNum)); 00519 } 00520 }; 00521 00522 // -- CHECKING RECORD TYPE SEQUENCE -- 00523 00524 // NOTE: No ntoh necessary! 00525 UInt32_t curRecType = recCmn_p->type; 00526 00527 if ( a_prevRecType != rec_NoRec_c 00528 && !df_IsValidPredecessor(a_curBlockType, a_prevRecType, curRecType)) { 00529 00530 string blockType = string( 00531 reinterpret_cast<const char*>(&a_curBlockType), 00532 sizeof(a_curBlockType)); 00533 00534 string prevStr = string( 00535 reinterpret_cast<const char*>(&a_prevRecType), 00536 sizeof(a_prevRecType)); 00537 00538 string curStr = 00539 (recCmn_p->type == rec_NoRec_c) 00540 ? string("NULL REC") 00541 : string((const char*)(&curRecType), sizeof(curRecType)); 00542 00543 ostringstream sstr; 00544 sstr << "Record " << prevStr 00545 << " can't be followed by " << curStr 00546 << " Block Type " << blockType 00547 << " a_curRecNum = " << a_curRecNum 00548 << *recCmn_p; 00549 00550 log_FUNC_m(VerifiedRecCmn); 00551 throw ivd_DFError(ie_DF_INVSEQ, a_lastGoodBlock, sstr.str()); 00552 }; 00553 00554 a_prevRecType = curRecType; 00555 00556 return recCmn_p; 00557 }


| bool df_RecReader::VerifyRecHeader | ( | const UInt8_t * | a_buffer, | |
| UInt32_t | a_recType, | |||
| UInt32_t | a_recSeqNum, | |||
| UInt32_t | a_recSize | |||
| ) | [static] |
Definition at line 560 of file df_recreader.cpp.
References df_RECVERSION_SIZE_d, df_RF_SENTINEL, df_verMaj_c, df_verMin_c, df_RecCmn_t::flags, IsRecordCookie(), log_FUNC_m, df_RecCmn_t::magicCookie, ntoh(), df_RecCmn_t::reserved1, df_RecCmn_t::seqNum, df_RecCmn_t::size, df_RecCmn_t::type, df_RecCmn_t::verMajor, and df_RecCmn_t::verMinor.
Referenced by DoesBlockContainNewMigration(), and ParseBlock().
00564 { 00565 00566 log_FUNC_m(VerifyRecHeader); 00567 00568 const df_RecCmn_t* recCmn_p = 00569 reinterpret_cast<const df_RecCmn_t*>(a_buffer); 00570 00571 return ( (memcmp(&recCmn_p->verMajor, df_verMaj_c, df_RECVERSION_SIZE_d) <= 0) 00572 && (memcmp(&recCmn_p->verMinor, df_verMin_c, df_RECVERSION_SIZE_d) <= 0) 00573 && IsRecordCookie(recCmn_p->magicCookie) 00574 && (recCmn_p->type == a_recType) 00575 && (ntoh(recCmn_p->flags) < df_RF_SENTINEL) 00576 && (ntoh(recCmn_p->seqNum) == a_recSeqNum) 00577 && (ntoh(recCmn_p->size) >= a_recSize) 00578 && (recCmn_p->reserved1[0] == 0) 00579 && (recCmn_p->reserved1[1] == 0) 00580 ); 00581 }


| bool df_RecReader::IsNextRecordRaw | ( | ) | const |
Definition at line 181 of file df_recreader.cpp.
References GetBlkSize(), m_blockProxy, m_curBlockPos, and m_curStreamLeft.
Referenced by GetNextRecord(), and df_Filter::NextInputBlock().
00181 { 00182 if (m_blockProxy->IsEndOfBlock(m_curBlockPos) && 00183 m_curStreamLeft >= GetBlkSize() ) { 00184 00185 return true; 00186 } 00187 else { 00188 return false; 00189 } 00190 }


| UInt32_t df_RecReader::GetBlkSize | ( | ) | const [inline] |
Definition at line 1544 of file df.h.
Referenced by df_FRIDistiller::CompleteStream(), df_Filter::CopyRecord(), DoesBlockContainNewMigration(), GetNextRawRecord(), GetNextRecord(), IsNextRecordRaw(), df_FRIDistiller::ProcRecBSEnd(), df_FRIDistiller::ProcRecBSStart(), df_FRIDistiller::ProcRecEmbData(), hsm_Recall::ProcRecRawData(), hsm_IVDFSRecoverer::ProcRecRawData(), df_SplitInfoUnpacker::ProcRecRawData(), df_FRIDistiller::ProcRecRawData(), df_Filter::ProcRecRawData(), SetNewDataBlock(), and Unpack().
01544 { return m_blockProxy->GetBlkSize(); };

| UInt32_t df_RecReader::GetCurBlockUsed | ( | ) | const [inline] |
Definition at line 1545 of file df.h.
Referenced by df_Filter::CopyRecord().
01545 { return m_blockProxy->GetCurBlockUsed(); };

| UInt32_t df_RecReader::GetCurBlockPos | ( | ) | const [inline] |
Definition at line 1546 of file df.h.
Referenced by df_Filter::CopyRecord().
01546 { return m_curBlockPos; };

| UInt32_t df_RecReader::GetBlockID | ( | ) | const [inline] |
Definition at line 1547 of file df.h.
Referenced by df_Filter::CheckUnhandledFiles(), df_Filter::CloseCopiedSplit(), df_FRIDistiller::HandleDFError(), LocateNextFile(), df_Filter::ProcBlock(), df_FRIDistiller::ProcRecFileHdr(), df_FRIDistiller::ProcRecRawData(), df_FRIDistiller::WriteFRIEnd(), and df_FRIDistiller::WriteFRIStart().
01547 { return m_blockProxy->GetBlockID(); };

| UInt32_t df_RecReader::GetLastKnownGoodBlockID | ( | ) | const [inline] |
Definition at line 1548 of file df.h.
Referenced by FRIEndCheck(), FRIStartCheck(), GetNextRecord(), PrepareDataStreamUnpacker(), df_SplitInfoUnpacker::ProcEndOfInput(), df_SplitInfoUnpacker::ProcRecFileEnd(), and Unpack().
01548 { return m_blockProxy->GetLastKnownGoodBlockID();};

| bool df_RecReader::IsCurBlockPtrNull | ( | ) | [inline] |
Definition at line 1549 of file df.h.
References NULL.
Referenced by GetNextRawRecord(), GetNextRecord(), LocateNextFile(), and Unpack().
01549 { return m_blockProxy->GetData() == NULL; };

| UInt32_t df_RecReader::GetRecNum | ( | ) | const [inline] |
| UInt32_t df_RecReader::GetBlockNum | ( | ) | const [inline] |
Definition at line 1551 of file df.h.
Referenced by df_FRIDistiller::HandleDFError(), df_FRIDistiller::ProcBlock(), and df_Filter::ProcBlock().
01551 { return m_blockProxy->GetBlockNum(); };

| const df_RecCmn_t * df_RecReader::PositionToRecord | ( | UInt32_t | a_recType | ) |
This function is intended for positioning to the first occurance of a specific record type inside the current block from the current position.
Most useful to position to the beginning of a file (rec_FileHdr_c).
| NULL | if the record is not found |
Definition at line 156 of file df_recreader.cpp.
References log_FUNC_m, m_blockProxy, m_curBlockPos, m_curRecType, m_prevRecType, m_recCmn_p, m_recNum, ntoh(), NULL, df_RecCmn_t::seqNum, df_RecCmn_t::size, and df_RecCmn_t::type.
Referenced by LocateNextFile(), and df_Filter::ProcBlock().
00156 { 00157 log_FUNC_m(PositionToRecord); 00158 00159 UInt32_t used = m_blockProxy->GetCurBlockUsed(); 00160 while (m_curBlockPos < used) { 00161 00162 m_recCmn_p = reinterpret_cast<const df_RecCmn_t*>( 00163 m_blockProxy->GetData() + m_curBlockPos); 00164 00165 if (m_recCmn_p->type == a_recType) { 00166 m_prevRecType = m_curRecType; 00167 m_curRecType = m_recCmn_p->type; 00168 return m_recCmn_p; 00169 } 00170 // recNum will be set and checked by GetNextRecord() 00171 m_recNum = ntoh(m_recCmn_p->seqNum); 00172 m_curRecType = m_recCmn_p->type; 00173 m_curBlockPos += ntoh(m_recCmn_p->size); 00174 }; 00175 return NULL; 00176 }


| UInt32_t df_RecReader::GetPrevRecType | ( | ) | const [inline] |
Definition at line 1555 of file df.h.
Referenced by i_FSC_i::InsertSplitFromFRIBlock().
01555 { return m_prevRecType; };

| void df_RecReader::SetNewDataBlock | ( | const UInt8_t * | a_dataBlock_p, | |
| UInt32_t | a_curBlockID = 0 | |||
| ) | [protected] |
Definition at line 195 of file df_recreader.cpp.
References dbg_DETAIL, GetBlkSize(), log_DBG_m, log_FUNC_m, m_blockProxy, m_curBlockPos, m_curRecType, m_curStreamLeft, ProcBlock(), ProcRawBlock(), and rec_Data_c.
Referenced by Unpack().
00197 { 00198 00199 log_FUNC_m(SetNewDataBlock); 00200 00201 log_DBG_m(dbg_DETAIL, 00202 "left: " << m_curStreamLeft << " bs: " << GetBlkSize() ); 00203 00204 if (m_curStreamLeft >= GetBlkSize()) { 00205 m_blockProxy->SetPtrToDataBlock(a_dataBlock_p, a_curBlockID, true); 00206 m_curRecType = rec_Data_c; 00207 m_curBlockPos = 0; 00208 ProcRawBlock(a_dataBlock_p); 00209 } 00210 else { 00211 m_blockProxy->SetPtrToDataBlock(a_dataBlock_p, a_curBlockID, false); 00212 m_curBlockPos = sizeof(df_BlockHeader_t); 00213 ProcBlock(a_dataBlock_p); 00214 } 00215 }


| bool df_RecReader::IsBlkPerBlkUnpacking | ( | ) | [inline, protected] |
Definition at line 1561 of file df.h.
Referenced by Unpack().
01561 { return m_blkPerBlkUnpacking; };

| virtual bool df_RecReader::HandleDFError | ( | const ivd_DFError & | ie | ) | [inline, private, virtual] |
Reimplemented in df_FRIDistiller.
Definition at line 1564 of file df.h.
Referenced by Unpack().

| bool df_RecReader::LocateNextFile | ( | ) | [private] |
Definition at line 654 of file df_recreader.cpp.
References dbg_LOW, GetBlockID(), IsCurBlockPtrNull(), log_DBG_m, log_FUNC_m, m_blockProxy, m_findMode, NULL, PositionToRecord(), and rec_FileHdr_c.
Referenced by Unpack().
00654 { 00655 log_FUNC_m(LocateNextFile); 00656 00657 if (IsCurBlockPtrNull()) { 00658 // No more input data. 00659 return false; 00660 } 00661 00662 if (m_blockProxy->GetFindMode()) { 00663 // Still in find mode: block header not yet found 00664 m_blockProxy->GetNextBlock(); 00665 return false; 00666 } 00667 00668 const df_RecCmn_t* pos = PositionToRecord(rec_FileHdr_c); 00669 if (pos != NULL) { 00670 log_DBG_m(dbg_LOW, "File header found on position: " << GetBlockID()); 00671 m_findMode = false; 00672 return true; 00673 } 00674 else { 00675 // turn block proxy back into find mode 00676 m_blockProxy->SetFindMode(true); 00677 m_blockProxy->GetNextBlock(); 00678 } 00679 return false; 00680 }


| void df_RecReader::GetNextRecord | ( | ) | [private] |
Definition at line 584 of file df_recreader.cpp.
References cmn_Num2Str(), dbg_DETAIL, GetBlkSize(), GetLastKnownGoodBlockID(), GetNextRawRecord(), ie_DF_INV_BLK, IsCurBlockPtrNull(), IsNextRecordRaw(), log_DBG_m, log_FUNC_m, m_blockProxy, m_curBlockPos, m_curRecType, m_prevRecType, m_recCmn_p, m_recNum, ntoh(), ProcBlock(), rec_Data_c, rec_NoRec_c, df_RecCmn_t::size, df_RecCmn_t::type, and VerifiedRecCmn().
Referenced by Unpack().
00584 { 00585 00586 log_FUNC_m(GetNextRecord); 00587 00588 if (m_curBlockPos == 0 && m_curRecType == rec_Data_c) { 00589 m_curBlockPos = GetBlkSize(); 00590 return; 00591 } 00592 00593 if ( IsNextRecordRaw() ) { 00594 log_DBG_m(dbg_DETAIL, "Next record is raw block."); 00595 GetNextRawRecord(); 00596 return; 00597 } 00598 00599 if ( m_curBlockPos >= m_blockProxy->GetCurBlockUsed() 00600 || IsCurBlockPtrNull()) { 00601 m_blockProxy->GetNextBlock(); 00602 00603 m_curBlockPos = sizeof(df_BlockHeader_t); 00604 m_curRecType = rec_NoRec_c; 00605 00606 if (IsCurBlockPtrNull()) { 00607 return; 00608 }; 00609 ProcBlock(m_blockProxy->GetData()); 00610 }; 00611 00612 m_recCmn_p = VerifiedRecCmn( 00613 m_blockProxy->GetData() + m_curBlockPos, 00614 m_recNum, 00615 m_blockProxy->GetBlkType(), 00616 m_prevRecType, 00617 GetLastKnownGoodBlockID() ); 00618 00619 m_curRecType = m_recCmn_p->type; 00620 m_prevRecType = m_curRecType; 00621 m_curBlockPos += ntoh(m_recCmn_p->size); 00622 00623 // if next record position is above block used size -> very strange! 00624 if (m_curBlockPos > m_blockProxy->GetCurBlockUsed()) { 00625 log_FUNC_m(GetNextRecord); 00626 throw ivd_DFError(ie_DF_INV_BLK, 00627 GetLastKnownGoodBlockID(), 00628 "Block Used=" + cmn_Num2Str(m_blockProxy->GetCurBlockUsed()) + 00629 ", Record End=" + cmn_Num2Str(m_curBlockPos)); 00630 } 00631 return; 00632 }


| void df_RecReader::GetNextRawRecord | ( | ) | [private] |
Definition at line 636 of file df_recreader.cpp.
References GetBlkSize(), IsCurBlockPtrNull(), m_blockProxy, m_curBlockPos, m_curRecType, m_prevRecType, ProcRawBlock(), rec_Data_c, and rec_NoRec_c.
Referenced by GetNextRecord().
00636 { 00637 00638 m_prevRecType = m_curRecType; 00639 m_blockProxy->GetRawNextBlock(); 00640 m_curBlockPos = GetBlkSize(); 00641 if (IsCurBlockPtrNull()) { 00642 m_curRecType = rec_NoRec_c; 00643 } 00644 else { 00645 ProcRawBlock(m_blockProxy->GetData()); 00646 m_curRecType = rec_Data_c; 00647 } 00648 return; 00649 }


| virtual void df_RecReader::ProcBlock | ( | const UInt8_t * | a_dataBlock | ) | [inline, private, virtual] |
Reimplemented in df_FRIDistiller, and df_Filter.
Definition at line 1572 of file df.h.
Referenced by GetNextRecord(), and SetNewDataBlock().

| virtual void df_RecReader::ProcRawBlock | ( | const UInt8_t * | a_dataBlock | ) | [inline, private, virtual] |
Reimplemented in df_FRIDistiller.
Definition at line 1573 of file df.h.
Referenced by GetNextRawRecord(), and SetNewDataBlock().

| virtual void df_RecReader::ProcRecFileHdr | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1575 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecFileEnd | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1576 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecBSStart | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1577 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecEmbData | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1578 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecRawData | ( | const UInt8_t * | a_block_p | ) | [inline, private, virtual] |
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1579 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecBSEnd | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1580 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecFRIStart | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
| virtual void df_RecReader::ProcRecFRIEnd | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in df_SplitInfoUnpacker.
Definition at line 1582 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcRecFRISpInfo | ( | const df_RecCmn_t * | a_recCmn_p | ) | [inline, private, virtual] |
Reimplemented in df_SplitInfoUnpacker.
Definition at line 1583 of file df.h.
Referenced by Unpack().

| virtual void df_RecReader::ProcEndOfInput | ( | ) | [inline, virtual] |
method ProcEndOfInput() must be called at the end of input when block per block parsing is used (migration, FRI check before wirtten to media.
).
Reimplemented in df_FRIDistiller, df_SplitInfoUnpacker, and df_Filter.
Definition at line 1587 of file df.h.
Referenced by Unpack().

| void df_RecReader::PrepareDataStreamUnpacker | ( | ) | [private, virtual] |
Definition at line 419 of file df_recreader.cpp.
References cmn_Num2Str(), dbg_DETAIL, df_RF_SPLITTED, df_RecCmn_t::flags, GetLastKnownGoodBlockID(), df_RecCmn_t::GetVarDataNet(), ie_DF_INVSTREAMFMT, ie_IMPOSSIBLE, log_DBG_m, log_FUNC_m, log_MARKLINE_m, m_curStreamLeft, m_curStreamName, m_curStreamType, m_recCmn_p, ntoh(), df_RecByteStreamStart_t::streamName, df_RecByteStreamStart_t::streamOffset, df_RecByteStreamStart_t::streamSize, df_RecByteStreamStart_t::streamSplitSize, and df_RecByteStreamStart_t::streamType.
Referenced by Unpack().
00419 { 00420 log_FUNC_m(PrepareDataStreamUnpacker); 00421 00422 const df_RecByteStreamStart_t *bss_p 00423 = df_GetSpecificRec<df_RecByteStreamStart_t>(m_recCmn_p); 00424 00425 m_curStreamType = ntoh(bss_p->streamType); 00426 UInt64_t streamSplitSize = ntoh(bss_p->streamSplitSize); 00427 UInt64_t streamSize = ntoh(bss_p->streamSize); 00428 UInt64_t streamOffset = ntoh(bss_p->streamOffset); 00429 00430 // NOTE! m_curStreamLeft could be changed by inherited class in ProcRecBSStart() method 00431 if ( streamSplitSize > 0 00432 || ntoh(m_recCmn_p->flags) & df_RF_SPLITTED) { 00433 if (streamSplitSize > streamSize - streamOffset) { 00434 log_MARKLINE_m; 00435 throw ivd_InternalError( 00436 ie_IMPOSSIBLE, "streamSplitSize > streamSize"); 00437 } 00438 m_curStreamLeft = streamSplitSize; 00439 } 00440 else { 00441 m_curStreamLeft = streamSize - streamOffset; 00442 } 00443 00444 m_curStreamName.assign( 00445 m_recCmn_p->GetVarDataNet(bss_p->streamName)); 00446 00447 log_DBG_m(dbg_DETAIL, "Stream: Size=" << streamSize 00448 << ", Offset=" << streamOffset 00449 << ", SplitSize=" << streamSplitSize 00450 << ", Name = \'" << m_curStreamName << "\'"); 00451 00452 log_DBG_m(dbg_DETAIL, "Stream left=" << m_curStreamLeft); 00453 00454 if (m_curStreamType == 0) { 00455 throw ivd_DFError(ie_DF_INVSTREAMFMT, 00456 GetLastKnownGoodBlockID(), 00457 "BSStart, but invalid streamType:" 00458 " strType=" + cmn_Num2Str(m_curStreamType) + 00459 ", strName=" + m_curStreamName + 00460 ", strLeft=" + cmn_Num2Str(m_curStreamLeft)); 00461 } 00462 }


| void df_RecReader::FRIStartCheck | ( | const df_RecCmn_t * | a_recCmn_p | ) | [private] |
Definition at line 684 of file df_recreader.cpp.
References dbg_DETAIL, GetLastKnownGoodBlockID(), ie_DF_INVSEQ, cmn_UUID_t::IsNull(), log_DBG_m, log_FUNC_m, m_currVolID, m_isVolumeIDRegular, m_volumeID, and df_RecFRIStart_t::volID.
Referenced by Unpack().
00684 { 00685 log_FUNC_m(FRIStartCheck); 00686 const df_RecFRIStart_t *friStart_p = df_GetSpecificRec<df_RecFRIStart_t>(a_recCmn_p); 00687 if (!m_currVolID.IsNull()) { 00688 ostringstream sstr; 00689 sstr << " new VolID : " << friStart_p->volID << endl 00690 << *this; 00691 throw ivd_DFError( 00692 ie_DF_INVSEQ, 00693 GetLastKnownGoodBlockID(), 00694 "Got second FRIStart record, missing FRIEnd.", sstr.str(), true); 00695 } 00696 00697 m_currVolID = friStart_p->volID; 00698 00699 if ( m_isVolumeIDRegular 00700 && m_volumeID != m_currVolID) { 00701 ostringstream sstr; 00702 sstr << " new VolID : " << friStart_p->volID << endl 00703 << *this; 00704 throw ivd_DFError( 00705 ie_DF_INVSEQ, 00706 GetLastKnownGoodBlockID(), 00707 "Got FRIStart record with different VolID then expected. ", sstr.str(), true); 00708 } 00709 00710 log_DBG_m(dbg_DETAIL, " Set m_currVolID " << m_currVolID); 00711 }


| void df_RecReader::FRIEndCheck | ( | const df_RecCmn_t * | a_recCmn_p | ) | [private] |
Definition at line 714 of file df_recreader.cpp.
References cmn_UUID_t::Clear(), dbg_DETAIL, dbg_LOW, df_RecFRIEnd_t::endPos, GetLastKnownGoodBlockID(), ie_DF_INVSEQ, cmn_UUID_t::IsNull(), log_DBG_m, log_FUNC_m, m_currVolID, ntoh(), df_RecFRIEnd_t::startPos, and df_RecFRIEnd_t::volID.
Referenced by Unpack().
00714 { 00715 log_FUNC_m(FRIEndCheck); 00716 const df_RecFRIEnd_t *friEnd_p = df_GetSpecificRec<df_RecFRIEnd_t>(a_recCmn_p); 00717 00718 log_DBG_m(dbg_LOW, 00719 endl << 00720 "FRIEnd start pos : " << ntoh(friEnd_p->startPos) << endl << 00721 "FRIEnd end pos : " << ntoh(friEnd_p->endPos) ); 00722 00723 if (m_currVolID.IsNull()) { 00724 ostringstream sstr; 00725 sstr << *this; 00726 throw ivd_DFError( 00727 ie_DF_INVSEQ, 00728 GetLastKnownGoodBlockID(), 00729 "Got FRIEnd record, but missing FRIStart record. ", sstr.str(), true); 00730 } 00731 00732 if (friEnd_p->volID != m_currVolID) { 00733 ostringstream sstr; 00734 sstr << "(" << friEnd_p->volID << "!=" << m_currVolID << ") " 00735 << *this; 00736 00737 throw ivd_DFError( 00738 ie_DF_INVSEQ, 00739 GetLastKnownGoodBlockID(), 00740 "FRIEnd.volID != FRIStart.volID. ", 00741 sstr.str(), true); 00742 } 00743 00744 m_currVolID.Clear(); 00745 log_DBG_m(dbg_DETAIL, " Clear m_currVolID " << m_currVolID); 00746 }


| bool df_RecReader::DoesBlockContainNewMigration | ( | ) | [protected] |
Definition at line 749 of file df_recreader.cpp.
References blk_Data_c, GetBlkSize(), log_FUNC_m, m_blockProxy, NULL, rec_FileHdr_c, and VerifyRecHeader().
Referenced by df_FRIDistiller::ProcRecRawData().
00749 { 00750 log_FUNC_m(DoesBlockContainNewMigration); 00751 00752 const UInt8_t *block_p = m_blockProxy->GetData(); 00753 00754 return ( (block_p != NULL) 00755 && m_blockProxy->VerifyBlockHeader(block_p, 00756 GetBlkSize(), 00757 1, // first block in migration 00758 blk_Data_c, 00759 0) // no continuous block 00760 && VerifyRecHeader(block_p + sizeof(df_BlockHeader_t), 00761 rec_FileHdr_c, 00762 1, // record seq number 00763 sizeof(df_RecCmn_t) + sizeof(df_RecFile_t)) 00764 ); 00765 }


| void df_RecReader::SetFindMode | ( | ) | [protected] |
Definition at line 219 of file df_recreader.cpp.
References log_FUNC_m, m_blockProxy, and m_findMode.
Referenced by df_FRIDistiller::HandleDFError().
00219 { 00220 log_FUNC_m(SetFindMode); 00221 00222 // 00223 // When in find mode, record reader attempts to position to the next 00224 // file record. It does not throw data format exceptions. 00225 // 00226 // When the file record is found, the find mode is automatically reset. 00227 // 00228 m_blockProxy->SetFindMode(true); 00229 m_blockProxy->GetNextBlock(); 00230 m_findMode = true; 00231 }

| IVD_DF_DECL_d ostream& operator<< | ( | ostream & | a_os, | |
| const df_RecReader & | o | |||
| ) | [friend] |
Definition at line 46 of file df_recreader.cpp.
00046 { 00047 a_os 00048 << "m_curRecType:" << o.m_curRecType << endl 00049 << "m_prevRecType:" << o.m_prevRecType << endl 00050 << "m_curBlockPos:" << o.m_curBlockPos << endl 00051 << "m_recNum:" << o.m_recNum << endl 00052 << "m_curStreamLeft:" << o.m_curStreamLeft << endl 00053 << "m_curStreamType:" << o.m_curStreamType << endl 00054 << "m_findMode:" << boolalpha << o.m_findMode << endl 00055 << "m_blkPerBlkUnpacking:" << boolalpha << o.m_blkPerBlkUnpacking << endl 00056 << "m_currVolID:" << o.m_currVolID << endl 00057 << "m_volumeID:" << o.m_volumeID << endl 00058 << "m_isVolumeIDRegular:" << boolalpha << o.m_isVolumeIDRegular << endl 00059 << "m_ignoreCorruptedMetaData:" << boolalpha << o.m_ignoreCorruptedMetaData << endl; 00060 00061 if (o.m_recCmn_p == NULL) { 00062 a_os << ", m_recCmn_p : NULL" << endl; 00063 } 00064 else { 00065 a_os << ", m_recCmn_p : " << *(o.m_recCmn_p); 00066 } 00067 00068 if (o.m_blockProxy.get() != NULL) { 00069 a_os << *(o.m_blockProxy); // it is auto pointer 00070 } 00071 else { 00072 a_os << "Block proxy: NULL." << endl; 00073 } 00074 00075 return a_os; 00076 }
UInt32_t df_RecReader::m_curRecType [protected] |
Definition at line 1468 of file df.h.
Referenced by df_Filter::CloseCopiedSplit(), GetNextRawRecord(), GetNextRecord(), operator<<(), PositionToRecord(), Reset(), SetNewDataBlock(), and Unpack().
UInt32_t df_RecReader::m_prevRecType [protected] |
Definition at line 1472 of file df.h.
Referenced by df_Filter::CloseCopiedSplit(), df_RecReader(), GetNextRawRecord(), GetNextRecord(), operator<<(), PositionToRecord(), Reset(), and Unpack().
UInt64_t df_RecReader::m_curStreamLeft [protected] |
How much stream has to be read?
Definition at line 1475 of file df.h.
Referenced by df_Filter::CloseCopiedSplit(), IsNextRecordRaw(), operator<<(), PrepareDataStreamUnpacker(), df_SplitInfoUnpacker::ProcRecBSStart(), df_Filter::ProcRecBSStart(), Reset(), SetNewDataBlock(), and Unpack().
UInt32_t df_RecReader::m_curStreamType [protected] |
follow members are used in derived classes.
For example df_FRIDistiller
Definition at line 1480 of file df.h.
Referenced by df_Filter::CloseCopiedSplit(), df_FRIDistiller::CompleteStream(), operator<<(), PrepareDataStreamUnpacker(), hsm_Recall::ProcRecBSEnd(), hsm_IVDFSRecoverer::ProcRecBSEnd(), df_SplitInfoUnpacker::ProcRecBSEnd(), df_FRIDistiller::ProcRecBSEnd(), hsm_Recall::ProcRecBSStart(), df_SplitInfoUnpacker::ProcRecBSStart(), df_FRIDistiller::ProcRecBSStart(), hsm_Recall::ProcRecEmbData(), df_SplitInfoUnpacker::ProcRecEmbData(), df_FRIDistiller::ProcRecEmbData(), hsm_Recall::ProcRecRawData(), df_FRIDistiller::ProcRecRawData(), Reset(), and Unpack().
string df_RecReader::m_curStreamName [protected] |
UTF-8 name of the current stream.
Definition at line 1483 of file df.h.
Referenced by df_Filter::CloseCopiedSplit(), df_FRIDistiller::CompleteStream(), PrepareDataStreamUnpacker(), df_SplitInfoUnpacker::ProcRecBSEnd(), hsm_IVDFSRecoverer::ProcRecBSStart(), df_FRIDistiller::ProcRecBSStart(), df_Filter::ProcRecBSStart(), df_SplitInfoUnpacker::ProcRecEmbData(), df_SplitInfoUnpacker::ProcRecFRIEnd(), and Unpack().
const cmn_UUID_t df_RecReader::m_volumeID [protected] |
parsing data of volume
Definition at line 1486 of file df.h.
Referenced by FRIStartCheck(), and operator<<().
bool df_RecReader::m_isVolumeIDRegular [protected] |
cmn_UUID_t df_RecReader::m_currVolID [protected] |
set when FRI is read
Definition at line 1490 of file df.h.
Referenced by FRIEndCheck(), FRIStartCheck(), operator<<(), and df_SplitInfoUnpacker::ProcEndOfInput().
bool df_RecReader::m_ignoreCorruptedMetaData [protected] |
Definition at line 1494 of file df.h.
Referenced by df_RecReader(), operator<<(), df_SplitInfoUnpacker::ProcRecBSEnd(), and Unpack().
df_RecReader::log_CLASSID_m [private] |
Macro to add class name member s_className.
Reimplemented in hsm_IVDFSRecoverer, hsm_Recall, df_FRIDistiller, df_SplitInfoUnpacker, df_Filter, fsc_FRIblockUnpacker, fsc_FRIunpacker, and fsc_VolumeCheck.
UInt32_t df_RecReader::m_curBlockPos [private] |
Definition at line 1500 of file df.h.
Referenced by GetNextRawRecord(), GetNextRecord(), IsNextRecordRaw(), operator<<(), PositionToRecord(), Reset(), and SetNewDataBlock().
UInt32_t df_RecReader::m_recNum [private] |
Definition at line 1505 of file df.h.
Referenced by GetNextRecord(), operator<<(), PositionToRecord(), Reset(), and Unpack().
auto_ptr<df_BlockProxy> df_RecReader::m_blockProxy [private] |
Definition at line 1506 of file df.h.
Referenced by df_RecReader(), DoesBlockContainNewMigration(), GetNextRawRecord(), GetNextRecord(), IsNextRecordRaw(), LocateNextFile(), operator<<(), PositionToRecord(), Reset(), SetFindMode(), SetNewDataBlock(), and Unpack().
const df_RecCmn_t* df_RecReader::m_recCmn_p [private] |
Definition at line 1507 of file df.h.
Referenced by GetNextRecord(), operator<<(), PositionToRecord(), PrepareDataStreamUnpacker(), Reset(), and Unpack().
bool df_RecReader::m_findMode [private] |
Definition at line 1508 of file df.h.
Referenced by LocateNextFile(), operator<<(), SetFindMode(), and Unpack().
bool df_RecReader::m_blkPerBlkUnpacking [private] |
1.5.6