Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Service

Ensemble des types utilisés dans la gestion des services. Plus de détails...

Classes

class  Arcane::AbstractService
 Classe de base d'un service. Plus de détails...
 
class  Arcane::BasicService
 Classe de base de service lié à un sous-domaine. Plus de détails...
 
class  Arcane::IServiceInfo
 Interface des informations d'un service ou d'un module. Plus de détails...
 
class  Arcane::ServiceBuilder< InterfaceType >
 Classe utilitaire pour instantier un service d'une interface donnée. Plus de détails...
 
class  Arcane::ServiceBuildInfo
 Structure contenant les informations pour créer un service. Plus de détails...
 

Macros

#define ARCANE_REGISTER_MODULE(class_name, a_module_properties)
 Macro pour enregistrer un module.
 
#define ARCANE_REGISTER_SERVICE(aclass, a_service_property, ...)
 Macro pour enregistrer un service.
 

Description détaillée

Ensemble des types utilisés dans la gestion des services.

La plupart des services utilisateurs sont des services de sous-domaine et dérivent indirectement de la classe BasicService. En règle générale, un service est défini dans un fichier AXL et l'outil axl2cc permet de générer la classe de base d'un service à partir de ce fichier AXL. Pour plus d'informations se reporter à la rubrique Service.

Il est néanmoins possible d'avoir des services sans fichier AXL. Dans ce cas, l'enregistrement d'un service pour qu'il soit reconnu par Arcane se fait via la macro ARCANE_REGISTER_SERVICE().

Documentation des macros

◆ ARCANE_REGISTER_MODULE

#define ARCANE_REGISTER_MODULE (   class_name,
  a_module_properties 
)
Valeur :
extern "C++" ARCANE_EXPORT Arcane::IModuleFactoryInfo*\
ARCANE_JOIN_WITH_LINE(arcaneCreateModuleFactory##class_name) (const Arcane::ModuleProperty& properties) \
{\
const char* module_name = properties.name();\
Arcane::ServiceProperty sp(module_name,0);\
auto* si = Arcane::Internal::ServiceInfo::create(sp,__FILE__,__LINE__); \
return new Arcane::ModuleFactory(Arcane::makeRef(mf), properties.isAutoload()); \
} \
Arcane::ServiceRegisterer ARCANE_EXPORT ARCANE_JOIN_WITH_LINE(globalModuleRegisterer##class_name) \
(& ARCANE_JOIN_WITH_LINE(arcaneCreateModuleFactory##class_name),a_module_properties)
Informations sur la fabrique d'un module.
Propriétés de création d'un module.
Propriétés de création d'un service.
Enregistreur de service et modules.

Macro pour enregistrer un module.

L'appel est comme suit:

Arcane::ModuleProperty("ModuleName"));
#define ARCANE_REGISTER_MODULE(class_name, a_module_properties)
Macro pour enregistrer un module.

Avec les paramètres suivants:

  • ClassName est le nom de la classe du module,
  • "ModuleName" est le nom du module.

Par exemple, on peut avoir une utilisation comme suit:

ARCANE_REGISTER_MODULE(ModuleSimpleHydro,
ModuleProperty("SimpleHydro"));
Note
Cette macro sert à enregistrer des modules qui n'ont pas de fichiers axl associés. Si ce n'est pas le cas, il faut utiliser la macro définie dans le fichier '.h' généré à partir du fichier axl.

Définition à la ligne 166 du fichier ModuleFactory.h.

◆ ARCANE_REGISTER_SERVICE

#define ARCANE_REGISTER_SERVICE (   aclass,
  a_service_property,
  ... 
)
Valeur :
namespace\
{\
ARCANE_JOIN_WITH_LINE(arcaneCreateServiceInfo##aclass) (const Arcane::ServiceProperty& property) \
{\
auto* si = Arcane::Internal::ServiceInfo::create(property,__FILE__,__LINE__); \
Arcane::Internal::ServiceAllInterfaceRegisterer<aclass> :: registerToServiceInfo(si,__VA_ARGS__); \
return si;\
}\
}\
Arcane::ServiceRegisterer ARCANE_EXPORT ARCANE_JOIN_WITH_LINE(globalServiceRegisterer##aclass) \
(& ARCANE_JOIN_WITH_LINE(arcaneCreateServiceInfo##aclass),a_service_property)
Interface des informations d'un service ou d'un module.

Macro pour enregistrer un service.

L'appel est comme suit:

ServiceProperty("ServiceName",where),
ARCANE_SERVICE_INTERFACE(InterfaceName1),);
ARCANE_SERVICE_INTERFACE(InterfaceName2),...);
#define ARCANE_SERVICE_INTERFACE(ainterface)
Macro pour déclarer une interface lors de l'enregistrement d'un service.
#define ARCANE_REGISTER_SERVICE(aclass, a_service_property,...)
Macro pour enregistrer un service.

Avec les paramètres suivants:

  • ClassName est le nom de la classe du service,
  • "ServiceName" est le nom du service.
  • where est de type eServiceType et indique où le service peut être créé.
  • InterfaceName est le nom de l'interface implémentée par le service. Il est possible de spécifier plusieurs interfaces pour un même service.

Par exemple, on peut avoir une utilisation comme suit:

ARCANE_REGISTER_SERVICE(ThreadParallelSuperMng,
ServiceProperty("ThreadParallelSuperMng",ST_Application),
ARCANE_SERVICE_INTERFACE(IParallelSuperMng));
Note
Cette macro utilise un objet global pour enregistrer le service et ne doit donc pas être utilisée dans un fichier qui peut appartenir à plusieurs unités de compilation (par exemple il ne doit pas se trouve dans un fichier d'en-tête).

Définition à la ligne 516 du fichier ServiceFactory.h.