14#include "arccore/base/ReferenceCounter.h"
16#include "arcane/utils/TraceAccessor.h"
17#include "arcane/utils/List.h"
18#include "arcane/utils/OStringStream.h"
19#include "arcane/utils/FatalErrorException.h"
20#include "arcane/utils/VersionInfo.h"
21#include "arcane/utils/ITraceMng.h"
22#include "arcane/utils/Array.h"
24#include "arcane/ServiceUtils.h"
25#include "arcane/ServiceInfo.h"
26#include "arcane/ServiceRegisterer.h"
27#include "arcane/IServiceFactory.h"
28#include "arcane/IModuleFactory.h"
29#include "arcane/ModuleProperty.h"
30#include "arcane/IServiceAndModuleFactoryMng.h"
73 std::set<ServiceRegisterer*> m_service_registerer_done_set;
108 if (m_service_factory_set.find(
sfi)!=m_service_factory_set.end()){
109 std::cout <<
"Service Factory is already referenced\n";
112 m_service_factory_set.insert(
sfi);
113 m_service_factory_infos.add(
sfi);
115 m_deletable_service_factory_list.add(
sfi);
117 for( ServiceFactory2Collection::Enumerator
j(
si->factories()); ++
j; ){
119 m_service_factories2.add(
sf2);
125 if (m_module_factory_set.find(
mfi)!=m_module_factory_set.end()){
126 std::cout <<
"Module Factory is already referenced\n";
129 m_module_factory_set.insert(
mfi);
130 m_module_factory_infos.add(
mfi);
136 m_service_infos.add(
si);
155 std::set<IServiceFactoryInfo*> m_service_factory_set;
156 std::set<IModuleFactoryInfo*> m_module_factory_set;
163arcaneCreateServiceAndModuleFactoryMng(
ITraceMng*
tm)
172ServiceAndModuleFactoryMng::
198 return m_p->serviceFactoryInfos();
207 return m_p->serviceFactories2();
216 return m_p->moduleFactoryInfos();
226 info() <<
"Add global service factory name=" <<
sfi->serviceInfo()->localName();
227 m_p->addServiceFactory(
sfi,
false);
237 info() <<
"Add global module factory name=" <<
mfi->moduleName();
238 m_p->addModuleFactory(
mfi);
249 log() <<
"WARNING: No registered service";
260 oss() <<
"\t" <<
sr->name() <<
'\n';
264 cout <<
"=== Registered service factories ===\n"
266 <<
"====================================\n"
268 <<
"====================================" << endl;
274 sr =
sr->nextService();
297 if (m_service_registerer_done_set.find(
sr)!=m_service_registerer_done_set.end())
299 m_service_registerer_done_set.insert(
sr);
304 if (
sr->moduleFactoryWithPropertyFunction()){
307 m_p->addModuleFactory(
mfi);
315 ARCANE_FATAL(
"Null PropertyFunc for ServiceRegisterer");
319 ARCANE_FATAL(
"Null ServiceInfo created by ServiceRegisterer");
322 m_p->registerServiceInfoForDelete(
si);
327 m_p->addServiceFactory(
sfi,
true);
334 info() <<
"WARNING: ServiceRegisterer does not have a valid create function name=" <<
sr->name();
#define ARCANE_CHECK_POINTER2(ptr, text)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Informations sur la fabrique d'un module.
Interface d'un gestionnaire de fabriques de services et modules.
virtual ServiceFactoryInfoCollection serviceFactoryInfos() const =0
Liste des informations sur les fabriques des services.
virtual ModuleFactoryInfoCollection moduleFactoryInfos() const =0
Liste des fabriques de service.
virtual void createAllServiceRegistererFactories()=0
Créé toutes les fabriques associées à des ServiceRegisterer.
virtual ServiceFactory2Collection serviceFactories2() const =0
Liste des informations sur les fabriques des modules.
virtual void addGlobalFactory(IServiceFactoryInfo *sfi)=0
Ajoute la fabrique de service sfi. sfi ne doit pas être détruit tant que cette instance est utilisée....
Informations sur la fabrique d'un service.
Interface des informations d'un service ou d'un module.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Compteur de référence sur une fabrique de module.
Flot de sortie lié à une String.
List< IServiceFactoryInfo * > m_service_factory_infos
Liste des informations sur les fabriques des services.
UniqueArray< IServiceFactoryInfo * > m_deletable_service_factory_list
Liste des IServiceFactoryInfo à détruire.
List< IModuleFactoryInfo * > m_module_factory_infos
Liste des informations sur les fabriques des modules.
UniqueArray< ModuleFactoryReference > m_deletable_module_factory_list
Liste des IModuleFactoryInfo à détruire.
List< Internal::IServiceFactory2 * > m_service_factories2
Liste des informations sur les fabriques des services (V2)
List< IServiceInfo * > m_service_infos
Liste des informations sur les des services.
Gestionnaire des fabriques de services et modules.
virtual ServiceFactoryInfoCollection serviceFactoryInfos() const
Liste des informations sur les fabriques des services.
void _addFactoryFromServiceRegisterer(ServiceRegisterer *sr)
Ajoute la fabrique spécifiée par sr.
virtual void addGlobalFactory(IServiceFactoryInfo *sfi)
Ajoute la fabrique de service sfi. sfi ne doit pas être détruit tant que cette instance est utilisée....
virtual ~ServiceAndModuleFactoryMng()
Détruit le gestionnaire.
virtual ModuleFactoryInfoCollection moduleFactoryInfos() const
Liste des fabriques de service.
virtual void createAllServiceRegistererFactories()
Créé toutes les fabriques associées à des ServiceRegisterer.
virtual ServiceFactory2Collection serviceFactories2() const
Liste des informations sur les fabriques des modules.
Enregistreur de service et modules.
static ServiceRegisterer * firstService()
Accès au premier élément de la chaine d'enregistreur de service.
static Integer nbService()
Nombre d'enregisteur de service dans la chaine.
Interface du gestionnaire de traces.
Classe d'accès aux traces.
TraceMessage log() const
Flot pour un message de log.
TraceMessage info() const
Flot pour un message d'information.