Classe utilitaire pour instantier un service d'une interface donnée. Plus de détails...
#include <arcane/core/ServiceBuilder.h>
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. | |
Fonctions membres privées | |
String | _getErrorMessage (String wanted_name) |
void | _throwFatal (const String &name, eServiceBuilderProperties properties) |
void | _throwFatal (eServiceBuilderProperties properties) |
Attributs privés | |
Internal::ServiceFinderBase2T< InterfaceType > | m_service_finder |
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:
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 arcanedoc_core_types_codeconfig).
Définition à la ligne 99 du fichier ServiceBuilder.h.
|
inline |
Instantiation pour créer un service d'un sous-domaine.
Définition à la ligne 104 du fichier ServiceBuilder.h.
|
inline |
Instantiation pour créer un service de sous-domaine associé au maillage mesh_handle.
Définition à la ligne 108 du fichier ServiceBuilder.h.
|
inline |
Instantiation pour créer un service d'une session.
Définition à la ligne 112 du fichier ServiceBuilder.h.
|
inline |
Instantiation pour créer un service de l'application.
Définition à la ligne 116 du fichier ServiceBuilder.h.
|
inline |
Instantiation pour créer un service d'option du jeu de données.
Définition à la ligne 120 du fichier ServiceBuilder.h.
|
inline |
Définition à la ligne 124 du fichier ServiceBuilder.h.
|
inlineprivate |
Définition à la ligne 407 du fichier ServiceBuilder.h.
|
inlineprivate |
Définition à la ligne 419 du fichier ServiceBuilder.h.
|
inlineprivate |
Définition à la ligne 427 du fichier ServiceBuilder.h.
|
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.
|
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 282 du fichier ServiceBuilder.h.
|
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.
Définition à la ligne 300 du fichier ServiceBuilder.h.
Références Arcane::SB_AllowNull.
Référencé par Arcane::ServiceBuilder< InterfaceType >::createInstance().
|
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 341 du fichier ServiceBuilder.h.
Références Arcane::SB_AllowNull.
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 374 du fichier ServiceBuilder.h.
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 358 du fichier ServiceBuilder.h.
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 318 du fichier ServiceBuilder.h.
Références Arcane::ServiceBuilder< InterfaceType >::createInstance().
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 390 du fichier ServiceBuilder.h.
|
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(), et Arcane::ArcaneVerifierModule::onExit().
|
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.
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 239 du fichier ServiceBuilder.h.
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 223 du fichier ServiceBuilder.h.
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 212 du fichier ServiceBuilder.h.
Références Arcane::ServiceBuilder< InterfaceType >::createReference().
|
inlinestatic |
Créé une instance implémentant l'interface InterfaceType.
Définition à la ligne 255 du fichier ServiceBuilder.h.
|
inline |
Remplit names avec les noms des services disponibles pour instantier cette interface.
Définition à la ligne 267 du fichier ServiceBuilder.h.
|
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.
|
private |
Définition à la ligne 403 du fichier ServiceBuilder.h.