OpenTREP Logo  0.6.0
C++ Open Travel Request Parsing Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
FacSupervisor.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // C
5 #include <assert.h>
6 // OPENTREP
11 
12 namespace OPENTREP {
13 
14  FacSupervisor* FacSupervisor::_instance = NULL;
15 
16  // //////////////////////////////////////////////////////////////////////
18  _logger (NULL) {
19  }
20 
21  // //////////////////////////////////////////////////////////////////////
23  if (_instance == NULL) {
24  _instance = new FacSupervisor();
25  }
26 
27  return *_instance;
28  }
29 
30  // //////////////////////////////////////////////////////////////////////
31  void FacSupervisor::
32  registerBomFactory (FacBomAbstract* ioFacBomAbstract_ptr) {
33  _bomPool.push_back (ioFacBomAbstract_ptr);
34  }
35 
36  // //////////////////////////////////////////////////////////////////////
37  void FacSupervisor::
38  registerServiceFactory (FacServiceAbstract* ioFacServiceAbstract_ptr) {
39  _svcPool.push_back (ioFacServiceAbstract_ptr);
40  }
41 
42  // //////////////////////////////////////////////////////////////////////
44  _logger = ioLogger_ptr;
45  }
46 
47  // //////////////////////////////////////////////////////////////////////
49  cleanBomLayer();
52  }
53 
54  // //////////////////////////////////////////////////////////////////////
56  for (BomFactoryPool_T::const_iterator itFactory = _bomPool.begin();
57  itFactory != _bomPool.end(); itFactory++) {
58  const FacBomAbstract* currentFactory_ptr = *itFactory;
59  assert (currentFactory_ptr != NULL);
60 
61  delete (currentFactory_ptr); currentFactory_ptr = NULL;
62  }
63 
64  // Empty the pool of Bom Factories
65  _bomPool.clear();
66  }
67 
68  // //////////////////////////////////////////////////////////////////////
70  for (ServiceFactoryPool_T::const_iterator itFactory = _svcPool.begin();
71  itFactory != _svcPool.end(); itFactory++) {
72  const FacServiceAbstract* currentFactory_ptr = *itFactory;
73  assert (currentFactory_ptr != NULL);
74 
75  delete (currentFactory_ptr); currentFactory_ptr = NULL;
76  }
77 
78  // Empty the pool of Service Factories
79  _svcPool.clear();
80  }
81 
82  // //////////////////////////////////////////////////////////////////////
84  delete _logger; _logger = NULL;
85  }
86 
87  // //////////////////////////////////////////////////////////////////////
89  if (_instance != NULL) {
90  _instance->cleanBomLayer();
91  _instance->cleanServiceLayer();
92  _instance->cleanLoggerService();
93  }
94  delete (_instance); _instance = NULL;
95  }
96 
97 }
static FacSupervisor & instance()
void registerServiceFactory(FacServiceAbstract *)
void registerBomFactory(FacBomAbstract *)
static void cleanFactory()
void registerLoggerService(Logger *)