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);
269 m_service_finder.getServicesNames(names);
281 ARCCORE_DEPRECATED_2019(
"use createAllInstances(Array<Ref<InterfaceType>>) instead")
284 m_service_finder.createAll(instances);
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")
317 static InterfaceType*
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;
373 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
377 InterfaceType* it = 0;
389 ARCCORE_DEPRECATED_2019(
"Use createReference() instead")
393 InterfaceType* it = 0;
410 m_service_finder.getServicesNames(valid_names);
411 if (valid_names.
size()!=0)
412 return String::format(
"no service named '{0}' found (valid values = {1})",
413 wanted_name,String::join(
", ",valid_names));
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);
442class ARCANE_CORE_EXPORT ServiceBuilderWithOptionsBase
446 ServiceBuilderWithOptionsBase(
ICaseMng* cm)
470template<
typename InterfaceType>
471class ServiceBuilderWithOptions
472:
private ServiceBuilderWithOptionsBase
476 ServiceBuilderWithOptions(
ICaseMng* cm) : ServiceBuilderWithOptionsBase(cm){}
488 _readOptions(opt.
get());
Integer size() const
Nombre d'éléments du vecteur.
Tableau d'items de types quelconques.
Option 'ServiceInstance' du jeu de données.
T * get() const
Retourne l'objet référé par l'instance.
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.
Référence à une instance.
InstanceType * get() const
Instance associée ou nullptr si aucune.
Encapsulation d'un pointeur avec compteur de référence.
Informations pour créer un service.
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.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.