CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/EventFilter/StorageManager/interface/FragmentStore.h

Go to the documentation of this file.
00001 // $Id: FragmentStore.h,v 1.10 2011/03/30 15:16:48 mommsen Exp $
00003 
00004 #ifndef EventFilter_StorageManager_FragmentStore_h
00005 #define EventFilter_StorageManager_FragmentStore_h
00006 
00007 #include <map>
00008 
00009 #include "IOPool/Streamer/interface/HLTInfo.h"
00010 
00011 #include "EventFilter/StorageManager/interface/I2OChain.h"
00012 #include "EventFilter/StorageManager/interface/Utils.h"
00013 
00014 
00015 namespace stor {
00016   
00027   class FragmentStore
00028   {
00029   public:
00030     
00031     explicit FragmentStore(size_t maxMemoryUsageMB);
00032 
00039     const bool addFragment(I2OChain&);
00040 
00041 
00046     void addToStaleEventTimes(const utils::Duration_t);
00047 
00048 
00053     void resetStaleEventTimes();
00054 
00055 
00062     const bool getStaleEvent(I2OChain&, utils::Duration_t timeout);
00063 
00064 
00068     inline void clear()
00069     { store_.clear(); memoryUsed_ = 0; }
00070 
00071 
00075     inline bool empty() const
00076     { return store_.empty(); }
00077 
00078 
00082     inline bool full() const
00083     { return (memoryUsed_ >= maxMemoryUsage_); }
00084 
00085 
00089     inline unsigned int size() const
00090     { return store_.size(); }
00091 
00092 
00096     inline size_t memoryUsed() const
00097     { return memoryUsed_; }
00098 
00099     
00100   private:
00101 
00102     //Prevent copying of the FragmentStore
00103     FragmentStore(FragmentStore const&);
00104     FragmentStore& operator=(FragmentStore const&);
00105 
00106     typedef std::map<FragKey, I2OChain> fragmentMap;
00107     fragmentMap store_;
00108     
00109     size_t memoryUsed_;
00110     const size_t maxMemoryUsage_;
00111   };
00112   
00113 } // namespace stor
00114 
00115 #endif // EventFilter_StorageManager_FragmentStore_h 
00116 
00117