// Authors: Rene Brun 04/06/2006 // Leandro Franco 10/04/2008 // Fabrizio Furano (CERN) Aug 2009 /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TTreeCacheUnzip #define ROOT_TTreeCacheUnzip #include "Bytes.h" #include "TTreeCache.h" #include #include #include class TBasket; class TBranch; class TMutex; class TTree; #ifdef R__USE_IMT namespace ROOT { namespace Experimental { class TTaskGroup; } } #endif class TTreeCacheUnzip : public TTreeCache { public: // We have three possibilities for the unzipping mode: // enable, disable and force enum EParUnzipMode { kEnable, kDisable, kForce }; // Unzipping states for a basket: enum EUnzipState { kUntouched, kProgress, kFinished }; protected: // Unzipping state for baskets struct UnzipState { // Note: we cannot use std::unique_ptr[]> or vector of unique_ptr // for fUnzipChunks since std::unique_ptr is not copy constructable. // However, in future upgrade we cannot use make_vector in C++14. std::unique_ptr *fUnzipChunks; /// fUnzipLen; /// *fUnzipStatus; /// fIOMutex; static TTreeCacheUnzip::EParUnzipMode fgParallel; ///< Indicate if we want to activate the parallelism // IMT TTaskGroup Manager #ifdef R__USE_IMT std::unique_ptr fUnzipTaskGroup; #endif // Unzipping related members Int_t fNseekMax; ///