source: XIOS/dev/branch_yushan/src/filter/garbage_collector.cpp @ 1037

Last change on this file since 1037 was 1037, checked in by yushan, 7 years ago

initialize the branch

File size: 1.0 KB
Line 
1#include "garbage_collector.hpp"
2
3namespace xios
4{
5  void CGarbageCollector::registerFilter(CInputPin* inputPin, Time timestamp)
6  {
7    registeredFilters[timestamp].insert(inputPin);
8  }
9
10  void CGarbageCollector::unregisterFilter(CInputPin* inputPin, Time timestamp)
11  {
12    std::map<Time, std::set<CInputPin*> >::iterator it = registeredFilters.find(timestamp);
13    if (it != registeredFilters.end())
14      it->second.erase(inputPin);
15  }
16
17  void CGarbageCollector::invalidate(Time timestamp)
18  {
19    std::map<Time, std::set<CInputPin*> >::iterator it    = registeredFilters.begin(),
20                                                    itEnd = registeredFilters.lower_bound(timestamp);
21    for (; it != itEnd; ++it)
22    {
23      std::set<CInputPin*>::iterator itFilter    = it->second.begin(),
24                                     itFilterEnd = it->second.end();
25      for (; itFilter != itFilterEnd; ++itFilter)
26        (*itFilter)->invalidate(timestamp);
27    }
28    registeredFilters.erase(registeredFilters.begin(), itEnd);
29  }
30} // namespace xios
Note: See TracBrowser for help on using the repository browser.