SctApiConfigCache.h

00001 #ifndef SCT_API_CONFIG_CACHE_H
00002 #define SCT_API_CONFIG_CACHE_H
00003 
00009 #include <Sct/AbcdModule.h>
00010 #include <CommonWithDsp/processor.h>
00011 #include <boost/shared_ptr.hpp>
00012 #include <string>
00013 #include <map>
00014 #include "SctApiFwd.h"
00015 #include <boost/thread.hpp>
00016 
00017 namespace SctApi {
00023 class SctApiConfigCache{
00024  public:
00025   class ModuleBanks;
00030   boost::shared_ptr<ModuleBanks> getFromMid(const UINT32 mid);
00031   boost::shared_ptr<const ModuleBanks> getFromMid(const UINT32 mid) const;
00035   void clearMid(const UINT32 mid);
00039   void clearAll();
00040 
00042   void copyAllModules(BankType from, std::list<BankType> to);
00044   void copyAllModules(BankType from, BankType to);
00048   void set(UINT32 mid, boost::shared_ptr<ModuleBanks> banks);
00052   SctApiConfigCache();
00056   ~SctApiConfigCache();
00060   class ModuleBanks{
00061   public:
00066     boost::shared_ptr<ABCDModule> get(BankType b);
00070     boost::shared_ptr<const ABCDModule> get(BankType b) const;
00075     void copy(BankType from, BankType to);
00080     void copy(BankType from, std::list<BankType> to);
00082     void set(BankType, boost::shared_ptr<ABCDModule> config);
00083   private:
00084     std::map<BankType, boost::shared_ptr<ABCDModule> > m_map;
00085     mutable boost::recursive_mutex bank_mutex;
00086   };
00087 
00088  private:
00089   std::map<UINT32, boost::shared_ptr<ModuleBanks> > m_map;  
00090   mutable boost::recursive_mutex cache_mutex;
00091 };
00092 
00093 }
00094 
00095 #endif

Generated on Mon Feb 6 14:01:28 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6