CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/EventFilter/StorageManager/interface/FragmentStore.h

Go to the documentation of this file.
00001 // $Id: FragmentStore.h,v 1.11 2011/08/31 20:11:59 wmtan Exp $
00003 
00004 #ifndef EventFilter_StorageManager_FragmentStore_h
00005 #define EventFilter_StorageManager_FragmentStore_h
00006 
00007 #include <map>
00008 
00009 #include "EventFilter/StorageManager/interface/FragKey.h"
00010 #include "EventFilter/StorageManager/interface/I2OChain.h"
00011 #include "EventFilter/StorageManager/interface/Utils.h"
00012 
00013 
00014 namespace stor {
00015   
00026   class FragmentStore
00027   {
00028   public:
00029     
00030     explicit FragmentStore(size_t maxMemoryUsageMB);
00031 
00038     const bool addFragment(I2OChain&);
00039 
00040 
00045     void addToStaleEventTimes(const utils::Duration_t);
00046 
00047 
00052     void resetStaleEventTimes();
00053 
00054 
00061     const bool getStaleEvent(I2OChain&, utils::Duration_t timeout);
00062 
00063 
00067     inline void clear()
00068     { store_.clear(); memoryUsed_ = 0; }
00069 
00070 
00074     inline bool empty() const
00075     { return store_.empty(); }
00076 
00077 
00081     inline bool full() const
00082     { return (memoryUsed_ >= maxMemoryUsage_); }
00083 
00084 
00088     inline unsigned int size() const
00089     { return store_.size(); }
00090 
00091 
00095     inline size_t memoryUsed() const
00096     { return memoryUsed_; }
00097 
00098     
00099   private:
00100 
00101     //Prevent copying of the FragmentStore
00102     FragmentStore(FragmentStore const&);
00103     FragmentStore& operator=(FragmentStore const&);
00104 
00105     typedef std::map<FragKey, I2OChain> fragmentMap;
00106     fragmentMap store_;
00107     
00108     size_t memoryUsed_;
00109     const size_t maxMemoryUsage_;
00110   };
00111   
00112 } // namespace stor
00113 
00114 #endif // EventFilter_StorageManager_FragmentStore_h 
00115 
00116