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>
Option 'ServiceInstance' du jeu de données.
Interface de l'application.
Interface du gestionnaire de cas.
Interface d'une session d'exécution d'un cas.
Interface du gestionnaire d'un sous-domaine.
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.
Classe de base des vecteurs 1D de données.
Référence à une instance.
InstanceType * get() const
Instance associée ou nullptr si aucune.
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.