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>
140 Ref<InterfaceType> mf = m_service_finder.createReference(name);
144 _throwFatal(name,properties);
167 Ref<InterfaceType> mf = m_service_finder.createReference(name,mesh);
171 _throwFatal(name,properties);
184 return m_service_finder.createAll();
198 InterfaceType* mf = m_service_finder.getSingleton();
202 _throwFatal(properties);
211 static Ref<InterfaceType>
222 static Ref<InterfaceType>
226 Ref<InterfaceType> it;
238 static Ref<InterfaceType>
242 Ref<InterfaceType> it;
254 static Ref<InterfaceType>
258 Ref<InterfaceType> it;
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);
470template<
typename InterfaceType>
488 _readOptions(opt.
get());
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.
Integer size() const
Nombre d'éléments du vecteur.
Classe de base des vecteurs 1D de données.
T * get() const
Retourne l'objet référé par l'instance.
Encapsulation d'un pointeur avec compteur de référence.
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.