12#ifndef ARCANE_CORE_SERVICEBUILDER_H
13#define ARCANE_CORE_SERVICEBUILDER_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/TraceInfo.h"
19#include "arcane/utils/FatalErrorException.h"
20#include "arcane/utils/ParallelFatalErrorException.h"
22#include "arcane/core/ISession.h"
23#include "arcane/core/ISubDomain.h"
24#include "arcane/core/IApplication.h"
25#include "arcane/core/IMesh.h"
26#include "arcane/core/ICaseOptions.h"
27#include "arcane/core/IFactoryService.h"
28#include "arcane/core/ServiceFinder2.h"
35namespace AxlOptionsBuilder
98template<
typename InterfaceType>
144 _throwFatal(name,properties);
171 _throwFatal(name,properties);
184 return m_service_finder.createAll();
198 InterfaceType*
mf = m_service_finder.getSingleton();
202 _throwFatal(properties);
229 it =
sb.createReference(name,properties);
245 it =
sb.createReference(name,properties);
261 it =
sb.createReference(name,mesh,properties);
269 m_service_finder.getServicesNames(
names);
281 ARCCORE_DEPRECATED_2019(
"use createAllInstances(Array<Ref<InterfaceType>>) instead")
299 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
302 InterfaceType*
mf = m_service_finder.create(name);
306 _throwFatal(name,properties);
316 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
340 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
344 InterfaceType*
mf = m_service_finder.create(name,mesh);
348 _throwFatal(name,properties);
357 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
361 InterfaceType*
it = 0;
364 it =
sb.createInstance(name,properties);
373 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
377 InterfaceType*
it = 0;
380 it =
sb.createInstance(name,properties);
389 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
393 InterfaceType*
it = 0;
396 it =
sb.createInstance(name,mesh,properties);
412 return String::format(
"no service named '{0}' found (valid values = {1})",
415 return String::format(
"no service named '{0}' found and no implementation available",
421 String err_msg = _getErrorMessage(name);
423 throw ParallelFatalErrorException(A_FUNCINFO,err_msg);
425 throw FatalErrorException(A_FUNCINFO,err_msg);
429 String err_msg =
"No singleton service found for that interface";
431 throw ParallelFatalErrorException(A_FUNCINFO,err_msg);
433 throw FatalErrorException(A_FUNCINFO,err_msg);
470template<
typename InterfaceType>
488 _readOptions(
opt.get());
Tableau d'items de types quelconques.
Option 'ServiceInstance' du jeu de données.
Interface de l'application.
Interface du gestionnaire de cas.
Interface d'une liste d'options du jeu de données.
Interface d'une session d'exécution d'un cas.
Interface du gestionnaire d'un sous-domaine.
Classe utilitaire pour retrouver un ou plusieurs services implémentant l'interface InterfaceType.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Informations pour créer un service.
Classe utilitaire pour instantier un service d'une interface donnée avec des options.
Classe utilitaire pour instantier un service d'une interface donnée.
UniqueArray< Ref< InterfaceType > > createAllInstances()
Créé une instance de chaque service qui implémente InterfaceType.
static Ref< InterfaceType > createReference(ISession *session, const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
Ref< InterfaceType > createReference(const String &name, IMesh *mesh, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
ServiceBuilder(ISubDomain *sd)
Instantiation pour créer un service d'un sous-domaine.
static Ref< InterfaceType > createReference(ISubDomain *sd, const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
Ref< InterfaceType > createReference(const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
static Ref< InterfaceType > createReference(ISubDomain *sd, const String &name, IMesh *mesh, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
InterfaceType * createInstance(const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
static Ref< InterfaceType > createReference(IApplication *app, const String &name, eServiceBuilderProperties properties=SB_None)
Créé une instance implémentant l'interface InterfaceType.
ServiceBuilder(ISession *session)
Instantiation pour créer un service d'une session.
InterfaceType * getSingleton(eServiceBuilderProperties properties=SB_None)
Instance singleton du service implémentant l'interface InterfaceType.
ServiceBuilder(const MeshHandle &mesh_handle)
Instantiation pour créer un service de sous-domaine associé au maillage mesh_handle.
void getServicesNames(Array< String > &names) const
Remplit names avec les noms des services disponibles pour instantier cette interface.
ServiceBuilder(IApplication *app)
Instantiation pour créer un service de l'application.
ServiceBuilder(IApplication *app, ICaseOptions *opt)
Instantiation pour créer un service d'option du jeu de données.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eServiceBuilderProperties
Propriétés pour la création de service.
@ SB_Collective
Indique que tous les processus font la même opération.
@ SB_AllowNull
Autorise l'absence du service.
@ SB_None
Aucune propriété particulière.