Changeset 2243


Ignore:
Timestamp:
10/01/21 10:40:31 (3 years ago)
Author:
jderouillat
Message:

Move context cleaning in xios_finalize (for clients) and when servers have finished their work

Location:
XIOS/dev/dev_ym/XIOS_COUPLING/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/cxios.cpp

    r2241 r2243  
    175175 
    176176#endif 
    177       
    178      // Delete CContext 
    179      xios_map<StdString, xios_map<StdString, std::shared_ptr<CContext> > >* contextMap = CObjectTemplate<CContext>::GetAllMapobject(); 
    180      for(auto it = contextMap->begin(); it != contextMap->end(); ++it) 
    181      { 
    182        for(auto it2 = it->second.begin(); it2 != it->second.end(); ++it2) 
    183        { 
    184            std::shared_ptr<CContext> todel = it2->second; 
    185            todel.reset(); 
    186        } 
    187        it->second.clear(); 
    188  
    189        std::vector<std::shared_ptr<CContext> >*  contextVect = CObjectTemplate<CContext>::GetAllVectobjectPtr(it->first); 
    190        for(auto it = contextVect->begin(); it != contextVect->end(); ++it) 
    191        { 
    192            it->reset(); 
    193        } 
    194        contextVect->clear(); 
    195         
    196      } 
    197      contextMap->clear(); 
    198       
    199177  } 
    200178 
     
    247225    report(0)<<CMemChecker::getAllCumulatedMem() ; 
    248226    CServer::closeInfoStream(); 
    249      
    250     // Delete CContext 
    251     xios_map<StdString, xios_map<StdString, std::shared_ptr<CContext> > >* contextMap = CObjectTemplate<CContext>::GetAllMapobject(); 
    252     for(auto it = contextMap->begin(); it != contextMap->end(); ++it) 
    253     { 
    254       for(auto it2 = it->second.begin(); it2 != it->second.end(); ++it2) 
    255       { 
    256           std::shared_ptr<CContext> todel = it2->second; 
    257           todel.reset(); 
    258       } 
    259       it->second.clear(); 
    260  
    261       std::vector<std::shared_ptr<CContext> >*  contextVect = CObjectTemplate<CContext>::GetAllVectobjectPtr(it->first); 
    262       for(auto it = contextVect->begin(); it != contextVect->end(); ++it) 
    263       { 
    264           it->reset(); 
    265       } 
    266       contextVect->clear(); 
    267        
    268     } 
    269     contextMap->clear(); 
    270227  } 
    271228 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/interface/c/icdata.cpp

    r2121 r2243  
    146146     CTimer::get("XIOS finalize").resume(); 
    147147     CXios::clientFinalize(); 
     148     // Delete CContext 
     149     CObjectTemplate<CContext>::cleanStaticDataStructure(); 
    148150   } 
    149151   CATCH_DUMP_STACK 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/object_template.hpp

    r2241 r2243  
    6969         static std::vector<std::shared_ptr<DerivedType> > & 
    7070            GetAllVectobject(const StdString & contextId); 
    71          static std::vector<std::shared_ptr<DerivedType> > * 
    72             GetAllVectobjectPtr(const StdString & contextId); 
    73  
    74          static xios_map<StdString, xios_map<StdString, std::shared_ptr<DerivedType> > >* 
    75             GetAllMapobject(); 
    76  
    7771 
    7872         /// Destructeur /// 
    7973         virtual ~CObjectTemplate(void); 
     74          
     75         static void cleanStaticDataStructure(void);      
    8076 
    8177         static bool has(const string& id) ; 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/object_template_impl.hpp

    r2241 r2243  
    6868      return (CObjectTemplate<T>::AllVectObj[contextId]); 
    6969   } 
    70    template <class T> 
    71       std::vector<std::shared_ptr<T> > * 
    72          CObjectTemplate<T>::GetAllVectobjectPtr(const StdString & contextId) 
    73    { 
    74       return &(CObjectTemplate<T>::AllVectObj[contextId]); 
    75    } 
    76  
    77   template <class T> 
    78       xios_map<StdString, xios_map<StdString, std::shared_ptr<T> > >* 
    79          CObjectTemplate<T>::GetAllMapobject() 
    80    { 
    81       return &(CObjectTemplate<T>::AllMapObj); 
     70   
     71   template <class T> 
     72      void CObjectTemplate<T>::cleanStaticDataStructure(void) 
     73   { 
     74     xios_map<StdString, xios_map<StdString, std::shared_ptr<T> > >* allMap = &(CObjectTemplate<T>::AllMapObj); 
     75      for(auto it = allMap->begin(); it != allMap->end(); ++it) 
     76      { 
     77        for(auto it2 = it->second.begin(); it2 != it->second.end(); ++it2) 
     78        { 
     79          std::shared_ptr<T> todel = it2->second; 
     80          todel.reset(); 
     81        } 
     82        it->second.clear(); 
     83 
     84        std::vector<std::shared_ptr<T> >* allVect = &(CObjectTemplate<T>::AllVectObj[it->first]); 
     85        for(auto it = allVect->begin(); it != allVect->end(); ++it) 
     86        { 
     87          it->reset(); 
     88        } 
     89        allVect->clear(); 
     90      } 
     91      allMap->clear(); 
    8292   } 
    8393 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/server.cpp

    r2242 r2243  
    205205      } 
    206206      CTimer::get("XIOS event loop").suspend() ; 
     207 
     208      // Delete CContext 
     209      CObjectTemplate<CContext>::cleanStaticDataStructure(); 
    207210    } 
    208211 
Note: See TracChangeset for help on using the changeset viewer.