Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::ServiceBuilder< InterfaceType >

Classe utilitaire pour instantier un service d'une interface donnée. Plus de détails...

#include <arcane/core/ServiceBuilder.h>

+ Graphe de collaboration de Arcane::ServiceBuilder< InterfaceType >:

Fonctions membres publiques

 ServiceBuilder (ISubDomain *sd)
 Instantiation pour créer un service d'un sous-domaine.
 
 ServiceBuilder (const MeshHandle &mesh_handle)
 Instantiation pour créer un service de sous-domaine associé au maillage mesh_handle.
 
 ServiceBuilder (ISession *session)
 Instantiation pour créer un service d'une session.
 
 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.
 
Ref< InterfaceType > createReference (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.
 
UniqueArray< Ref< InterfaceType > > createAllInstances ()
 Créé une instance de chaque service qui implémente InterfaceType.
 
InterfaceType * getSingleton (eServiceBuilderProperties properties=SB_None)
 Instance singleton du service implémentant l'interface InterfaceType.
 
void getServicesNames (Array< String > &names) const
 Remplit names avec les noms des services disponibles pour instantier cette interface.
 
void createAllInstances (Array< InterfaceType * > &instances)
 Créé une instance de chaque service qui implémente InterfaceType.
 
InterfaceType * createInstance (const String &name, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 
InterfaceType * createInstance (const String &name, IMesh *mesh, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 

Fonctions membres publiques statiques

static Ref< InterfaceType > createReference (ISubDomain *sd, const String &name, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 
static Ref< InterfaceType > createReference (ISession *session, 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.
 
static Ref< InterfaceType > createReference (ISubDomain *sd, const String &name, IMesh *mesh, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 
static InterfaceType * createInstance (ISubDomain *sd, const String &name, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 
static InterfaceType * createInstance (ISession *session, const String &name, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 
static InterfaceType * createInstance (IApplication *app, const String &name, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 
static InterfaceType * createInstance (ISubDomain *sd, const String &name, IMesh *mesh, eServiceBuilderProperties properties=SB_None)
 Créé une instance implémentant l'interface InterfaceType.
 

Description détaillée

template<typename InterfaceType>
class Arcane::ServiceBuilder< InterfaceType >

Classe utilitaire pour instantier un service d'une interface donnée.

Cette classe permet de rechercher l'ensemble des services disponibles et implémentant l'interface InterfaceType passée en paramètre template.

Cette classe remplace les anciennes classes qui permettaient de créer des services, à savoir ServiceFinderT, ServiceFinder2T et FactoryT.

Il existe trois constructeurs suivant que l'on souhaite instantier un service du sous-domaine, de la session ou de l'application. En général, il s'agit d'un service de sous-domaine, les deux dernières catégories étant plutôt utilisées pour les services internes à Arcane.

L'exemple suivant créé un service de sous-domaine implémentant l'interface IMyInterface et de nom TOTO:

ISubDomain* sd = ...
ServiceBuilder<IMyInterface> builder(sd);
ServiceRef<IMyInterface> iservice = builder.createReference("TOTO");
...
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74

L'instance retournée est gérée par compteur de référence et est détruite dès qu'il n'y a plus de référence dessus. Par défaut, createInstance() lève une exception si le service n'est pas trouvé, sauf si la propriété SB_AllowNull est spécifiée.. Si la propriété SB_Collective est vrai, l'exception levée est du type ParallelFatalErrorException, sinon elle du type FatalErrorException. Cela est utile si on est sur que tous les processus vont faire la même opération. Dans ce cas, cela permet de ne générer qu'un seul message d'erreur et d'arrêter le code proprement.

Il est aussi possible de récupérer une instance singleton d'un service, via getSingleton(). Les instances singletons qui sont disponibles sont référencées dans le fichier de configuration du code (voir Configuration du code (.CONFIG)).

Définition à la ligne 99 du fichier ServiceBuilder.h.

Documentation des constructeurs et destructeur

◆ ServiceBuilder() [1/5]

template<typename InterfaceType >
Arcane::ServiceBuilder< InterfaceType >::ServiceBuilder ( ISubDomain sd)
inline

Instantiation pour créer un service d'un sous-domaine.

Définition à la ligne 104 du fichier ServiceBuilder.h.

◆ ServiceBuilder() [2/5]

template<typename InterfaceType >
Arcane::ServiceBuilder< InterfaceType >::ServiceBuilder ( const MeshHandle mesh_handle)
inline

Instantiation pour créer un service de sous-domaine associé au maillage mesh_handle.

Définition à la ligne 108 du fichier ServiceBuilder.h.

◆ ServiceBuilder() [3/5]

template<typename InterfaceType >
Arcane::ServiceBuilder< InterfaceType >::ServiceBuilder ( ISession session)
inline

Instantiation pour créer un service d'une session.

Définition à la ligne 112 du fichier ServiceBuilder.h.

◆ ServiceBuilder() [4/5]

template<typename InterfaceType >
Arcane::ServiceBuilder< InterfaceType >::ServiceBuilder ( IApplication app)
inline

Instantiation pour créer un service de l'application.

Définition à la ligne 116 du fichier ServiceBuilder.h.

◆ ServiceBuilder() [5/5]

template<typename InterfaceType >
Arcane::ServiceBuilder< InterfaceType >::ServiceBuilder ( IApplication app,
ICaseOptions opt 
)
inline

Instantiation pour créer un service d'option du jeu de données.

Définition à la ligne 120 du fichier ServiceBuilder.h.

◆ ~ServiceBuilder()

template<typename InterfaceType >
Arcane::ServiceBuilder< InterfaceType >::~ServiceBuilder ( )
inline

Définition à la ligne 124 du fichier ServiceBuilder.h.

Documentation des fonctions membres

◆ createAllInstances() [1/2]

template<typename InterfaceType >
UniqueArray< Ref< InterfaceType > > Arcane::ServiceBuilder< InterfaceType >::createAllInstances ( )
inline

Créé une instance de chaque service qui implémente InterfaceType.

Les instances créées sont rangées dans instances. L'appelant doit les détruire via l'opérateur delete une fois qu'elles ne sont plus utiles.

Définition à la ligne 182 du fichier ServiceBuilder.h.

◆ createAllInstances() [2/2]

template<typename InterfaceType >
void Arcane::ServiceBuilder< InterfaceType >::createAllInstances ( Array< InterfaceType * > &  instances)
inline

Créé une instance de chaque service qui implémente InterfaceType.

Les instances créées sont rangées dans instances. L'appelant doit les détruire via l'opérateur delete une fois qu'elles ne sont plus utiles.

Obsolète:
Utilise la surcharge qui retourne un tableau de références.

Définition à la ligne 282 du fichier ServiceBuilder.h.

◆ createInstance() [1/6]

template<typename InterfaceType >
InterfaceType * Arcane::ServiceBuilder< InterfaceType >::createInstance ( const String name,
eServiceBuilderProperties  properties = SB_None 
)
inline

Créé une instance implémentant l'interface InterfaceType.

L'instance est créée avec la fabrique enregistrée sous le nom name. Le pointeur retourné doit être désalloué par delete.

Par défaut, une exception est levée si le service spécifiée n'est pas trouvé. Il est possible de changer ce comportement en spécifiant SB_AllowNull dans properties auquel cas la fonction retourne un pointeur nul si le service spécifié n'existe pas.

Obsolète:
Utilise createReference() à la place.

Définition à la ligne 300 du fichier ServiceBuilder.h.

Références Arcane::SB_AllowNull.

Référencé par Arcane::ServiceBuilder< InterfaceType >::createInstance(), Arcane::ServiceBuilder< InterfaceType >::createInstance(), Arcane::ServiceBuilder< InterfaceType >::createInstance(), et Arcane::ServiceBuilder< InterfaceType >::createInstance().

◆ createInstance() [2/6]

template<typename InterfaceType >
InterfaceType * Arcane::ServiceBuilder< InterfaceType >::createInstance ( const String name,
IMesh mesh,
eServiceBuilderProperties  properties = SB_None 
)
inline

Créé une instance implémentant l'interface InterfaceType.

L'instance est créée avec la fabrique enregistrée sous le nom name. Le pointeur retourné doit être désalloué par delete.

Il est possible de spécifier le maillage mesh sur lequel reposera le service. Cela n'est utile que pour les services de sous-domaine. Pour les services de session ou d'application, cet argument n'est pas utilisé.

Par défaut, une exception est levée si le service spécifiée n'est pas trouvé. Il est possible de changer ce comportement en spécifiant SB_AllowNull dans properties auquel cas la fonction retourne un pointeur nul si le service spécifié n'existe pas.

Obsolète:
Utilise createReference() à la place.

Définition à la ligne 341 du fichier ServiceBuilder.h.

Références Arcane::SB_AllowNull.

◆ createInstance() [3/6]

template<typename InterfaceType >
static InterfaceType * Arcane::ServiceBuilder< InterfaceType >::createInstance ( IApplication app,
const String name,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 374 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createInstance().

◆ createInstance() [4/6]

template<typename InterfaceType >
static InterfaceType * Arcane::ServiceBuilder< InterfaceType >::createInstance ( ISession session,
const String name,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 358 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createInstance().

◆ createInstance() [5/6]

template<typename InterfaceType >
static InterfaceType * Arcane::ServiceBuilder< InterfaceType >::createInstance ( ISubDomain sd,
const String name,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)
Obsolète:
Utilise createReference() à la place.

Définition à la ligne 318 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createInstance().

◆ createInstance() [6/6]

template<typename InterfaceType >
static InterfaceType * Arcane::ServiceBuilder< InterfaceType >::createInstance ( ISubDomain sd,
const String name,
IMesh mesh,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 390 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createInstance().

◆ createReference() [1/6]

template<typename InterfaceType >
Ref< InterfaceType > Arcane::ServiceBuilder< InterfaceType >::createReference ( const String name,
eServiceBuilderProperties  properties = SB_None 
)
inline

Créé une instance implémentant l'interface InterfaceType.

L'instance est créée avec la fabrique enregistrée sous le nom name.

Par défaut, une exception est levée si le service spécifiée n'est pas trouvé. Il est possible de changer ce comportement en spécifiant SB_AllowNull dans properties auquel cas la fonction retourne un pointeur nul si le service spécifié n'existe pas.

Définition à la ligne 138 du fichier ServiceBuilder.h.

Références Arcane::SB_AllowNull.

Référencé par Arcane::ServiceBuilder< InterfaceType >::createReference(), Arcane::ServiceBuilder< InterfaceType >::createReference(), Arcane::ServiceBuilder< InterfaceType >::createReference(), et Arcane::ServiceBuilder< InterfaceType >::createReference().

◆ createReference() [2/6]

template<typename InterfaceType >
Ref< InterfaceType > Arcane::ServiceBuilder< InterfaceType >::createReference ( const String name,
IMesh mesh,
eServiceBuilderProperties  properties = SB_None 
)
inline

Créé une instance implémentant l'interface InterfaceType.

L'instance est créée avec la fabrique enregistrée sous le nom name. Le pointeur retourné doit être désalloué par delete.

Il est possible de spécifier le maillage mesh sur lequel reposera le service. Cela n'est utile que pour les services de sous-domaine. Pour les services de session ou d'application, cet argument n'est pas utilisé.

Par défaut, une exception est levée si le service spécifiée n'est pas trouvé. Il est possible de changer ce comportement en spécifiant SB_AllowNull dans properties auquel cas la fonction retourne un pointeur nul si le service spécifié n'existe pas.

Définition à la ligne 164 du fichier ServiceBuilder.h.

Références Arcane::SB_AllowNull.

◆ createReference() [3/6]

template<typename InterfaceType >
static Ref< InterfaceType > Arcane::ServiceBuilder< InterfaceType >::createReference ( IApplication app,
const String name,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 239 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createReference().

◆ createReference() [4/6]

template<typename InterfaceType >
static Ref< InterfaceType > Arcane::ServiceBuilder< InterfaceType >::createReference ( ISession session,
const String name,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 223 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createReference().

◆ createReference() [5/6]

template<typename InterfaceType >
static Ref< InterfaceType > Arcane::ServiceBuilder< InterfaceType >::createReference ( ISubDomain sd,
const String name,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 212 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createReference().

◆ createReference() [6/6]

template<typename InterfaceType >
static Ref< InterfaceType > Arcane::ServiceBuilder< InterfaceType >::createReference ( ISubDomain sd,
const String name,
IMesh mesh,
eServiceBuilderProperties  properties = SB_None 
)
inlinestatic

Créé une instance implémentant l'interface InterfaceType.

Voir également
createInstance(const String& name,eServiceBuilderProperties properties)

Définition à la ligne 255 du fichier ServiceBuilder.h.

Références Arcane::ServiceBuilder< InterfaceType >::createReference().

◆ getServicesNames()

template<typename InterfaceType >
void Arcane::ServiceBuilder< InterfaceType >::getServicesNames ( Array< String > &  names) const
inline

Remplit names avec les noms des services disponibles pour instantier cette interface.

Définition à la ligne 267 du fichier ServiceBuilder.h.

◆ getSingleton()

template<typename InterfaceType >
InterfaceType * Arcane::ServiceBuilder< InterfaceType >::getSingleton ( eServiceBuilderProperties  properties = SB_None)
inline

Instance singleton du service implémentant l'interface InterfaceType.

L'instance retournée ne doit pas être détruite.

Par défaut, une exception est levée si le service spécifiée n'est pas trouvé. Il est possible de changer ce comportement en spécifiant SB_AllowNull dans properties auquel cas la fonction retourne un pointeur nul si le service spécifié n'existe pas.

Définition à la ligne 196 du fichier ServiceBuilder.h.

Références Arcane::SB_AllowNull.


La documentation de cette classe a été générée à partir du fichier suivant :