Arcane  v4.1.4.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Application.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* Application.h (C) 2000-2026 */
9/* */
10/* Implémentation IApplication. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMPL_APPLICATION_H
13#define ARCANE_IMPL_APPLICATION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/List.h"
18#include "arcane/utils/ScopedPtr.h"
19#include "arcane/utils/String.h"
20#include "arcane/utils/ApplicationInfo.h"
21#include "arcane/utils/NullThreadMng.h"
22
23#include "arcane/core/IApplication.h"
24#include "arcane/core/XmlNode.h"
25
26#include "arccore/base/ReferenceCounter.h"
27
28#include <memory>
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33namespace Arcane
34{
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
50class ARCANE_IMPL_EXPORT Application
51: public IApplication
52{
53 class CoreApplication;
54
55 public:
56
57 explicit Application(IArcaneMain*);
58 ~Application() override;
59
60 public:
61
62 void build() override;
63 void initialize() override;
64
65 public:
66
67 IBase* objectParent() const override { return nullptr; }
68 String objectNamespaceURI() const override { return m_namespace_uri; }
69 String objectLocalName() const override { return m_local_name; }
70 VersionInfo objectVersion() const override { return VersionInfo(1,0,0); }
71
72 public:
73
74 ITraceMng* traceMng() const override { return m_trace.get(); }
75 IRessourceMng* ressourceMng() const override { return m_ressource_mng; }
76 IServiceMng* serviceMng() const override { return m_service_mng; }
77
83 IIOMng* ioMng() override { return m_io_mng; }
84 IConfigurationMng* configurationMng() const override { return m_configuration_mng; }
85 IDataFactory* dataFactory() override;
86 IDataFactoryMng* dataFactoryMng() const override;
87 const ApplicationInfo& applicationInfo() const override { return m_exe_info; }
88 const ApplicationBuildInfo& applicationBuildInfo() const override;
89 const DotNetRuntimeInitialisationInfo& dotnetRuntimeInitialisationInfo() const override;
90 const AcceleratorRuntimeInitialisationInfo& acceleratorRuntimeInitialisationInfo() const override;
91 String versionStr() const override { return m_version_str; }
93 String mainVersionStr() const override { return m_main_version_str; }
94 String targetinfoStr() const override { return m_targetinfo_str; }
95 String applicationName() const override { return m_application_name; }
96 String codeName() const override { return m_code_name; }
97 String userName() const override { return m_user_name; }
98 String userConfigPath() const override { return m_user_config_path; }
99 IMainFactory* mainFactory() const override { return m_main_factory; }
100
101 ByteConstSpan configBuffer() const override { return asBytes(m_config_bytes.constSpan()); }
102 ByteConstSpan userConfigBuffer() const override { return asBytes(m_user_config_bytes.constSpan()); }
103
104 SessionCollection sessions() override { return m_sessions; }
105 void addSession(ISession* s) override;
106 void removeSession(ISession* s) override;
107
108 ServiceFactory2Collection serviceFactories2() override;
109 ModuleFactoryInfoCollection moduleFactoryInfos() override;
110
111 Ref<ICodeService> getCodeService(const String& file_name) override;
112 bool hasGarbageCollector() const override { return m_has_garbage_collector; }
113
115 {
116 return m_physical_unit_system_service.get();
117 }
118
119 ITraceMngPolicy* getTraceMngPolicy() override { return m_trace_policy; }
120 ITraceMng* createAndInitializeTraceMng(ITraceMng* parent_trace,
121 const String& file_suffix) override;
122
123 private:
125 String m_namespace_uri;
126 String m_local_name;
127 NullThreadImplementation m_null_thread_implementation;
128 IArcaneMain* m_arcane_main = nullptr;
135 IIOMng* m_io_mng = nullptr;
136 IConfigurationMng* m_configuration_mng = nullptr;
142 String m_code_name;
149 bool m_has_garbage_collector = false;
150 ITraceMngPolicy* m_trace_policy = nullptr;
151
152 private:
153
154 bool m_is_init = false;
161 //bool m_is_info_disabled;
162 bool m_is_master = false;
163 Ref<IPhysicalUnitSystemService> m_physical_unit_system_service;
164 Ref<IOnlineDebuggerService> m_online_debugger;
165 Ref<IProfilingService> m_profiling_service;
166
167 IServiceAndModuleFactoryMng* m_service_and_module_factory_mng = nullptr;
168
169 Ref<IProcessorAffinityService> m_processor_affinity_service;
170 Ref<IPerformanceCounterService> m_performance_counter_service;
171 Ref<IParallelSuperMng> m_owned_sequential_parallel_super_mng;
172 std::unique_ptr<ConcurrencyApplication> m_core_application;
173
174 private:
175
176 void _openUserConfig();
177 void _initDataInitialisationPolicy();
178 template<typename InterfaceType> Ref<InterfaceType>
179 _tryCreateService(const StringList& names,String* found_name);
180 void _readCodeConfigurationFile();
181 void _setCoreServices();
182};
183
184/*---------------------------------------------------------------------------*/
185/*---------------------------------------------------------------------------*/
186
187} // End namespace Arcane
188
189/*---------------------------------------------------------------------------*/
190/*---------------------------------------------------------------------------*/
191
192#endif
193
Informations pour construire une instance de IApplication.
Informations sur une application.
String m_user_config_path
Répertoire de configuration utilisateur.
void _openUserConfig()
Analyse le fichier de configuration de l'utilisateur.
ReferenceCounter< ITraceMng > m_trace
Gestionnaire de traces.
ModuleFactoryInfoCollection m_main_module_factory_infos
Tableau des fabriques de module.
String targetinfoStr() const override
Informations sur les options de compilation de l'application.
Definition Application.h:94
ScopedPtrT< IXmlDocumentHolder > m_config_document
Arbre DOM de la configuration.
IRessourceMng * ressourceMng() const override
Gestionnaire de ressources.
Definition Application.h:75
String userConfigPath() const override
Chemin du répertoire des configurations utilisateur.
Definition Application.h:98
IServiceMng * serviceMng() const override
Gestionnaire de services.
Definition Application.h:76
ApplicationInfo m_exe_info
Informations sur l'exécutable.
String m_major_and_minor_version_str
Version M.m.
ITraceMngPolicy * getTraceMngPolicy() override
Politique de configuration d'un gestionnaire de trace.
String m_version_str
Infos sur la configuration.
IMainFactory * m_main_factory
Manufacture principale.
IPhysicalUnitSystemService * getPhysicalUnitSystemService() override
Service gérant les systèmes d'unités physiques.
IMainFactory * mainFactory() const override
Manufacture principale.
Definition Application.h:99
SessionList m_sessions
Liste des sessions.
Ref< InterfaceType > _tryCreateService(const StringList &names, String *found_name)
IBase * objectParent() const override
Parent de cet objet.
Definition Application.h:67
SessionCollection sessions() override
Liste des sessions.
String m_user_name
Nom de l'utilisateur.
IRessourceMng * m_ressource_mng
Gestionnaire de ressources.
String applicationName() const override
Nom de l'application.
Definition Application.h:95
const ApplicationInfo & applicationInfo() const override
Informations sur l'exécutable.
Definition Application.h:87
String codeName() const override
Nom du code.
Definition Application.h:96
XmlNode m_user_config_root_element
Elément racine de la configuration utilisateur.
String m_main_version_str
Version sous la forme Majeur.mineur.beta.
void initialize() override
Initialise l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
String userName() const override
Nom de l'utilisateur.
Definition Application.h:97
UniqueArray< Byte > m_user_config_bytes
Fichier contenant la configuration utilisateur.
VersionInfo objectVersion() const override
Numéro de version du service.
Definition Application.h:70
bool m_is_init
true si déjà initialisé
IIOMng * ioMng() override
Gestionnaire des entrées/sorties.
Definition Application.h:83
void build() override
Construit les membres de l'instance. L'instance n'est pas utilisable tant que cette méthode n'a pas é...
ITraceMng * traceMng() const override
Gestionnaire de traces.
Definition Application.h:74
String mainVersionStr() const override
Numéro de version principal (sans la béta) de l'application.
Definition Application.h:93
String objectLocalName() const override
Nom local de l'objet.
Definition Application.h:69
XmlNode m_config_root_element
Elément racine de la configuration.
String majorAndMinorVersionStr() const override
Numéro de version majeur et mineure sous la forme M.m.
Definition Application.h:92
String m_application_name
Nom de l'application.
String m_targetinfo_str
Infos sur la configuration.
ScopedPtrT< IXmlDocumentHolder > m_user_config_document
Arbre DOM de la configuration utilisateur.
ServiceFactoryInfoCollection m_main_service_factory_infos
Tableau des fabriques de service.
bool hasGarbageCollector() const override
Indique que certains objets sont gérés via un ramasse miette.
IConfigurationMng * configurationMng() const override
Gestionnaire des configurations d'exécution.
Definition Application.h:84
Ref< IParallelSuperMng > m_parallel_super_mng
Gestionnaire du parallélisme.
IServiceMng * m_service_mng
Gestionnaire des services.
IIOMng * m_io_mng
Gestionnaire des entrées/sorties.
UniqueArray< Byte > m_config_bytes
Fichier contenant la configuration.
Ref< IDataFactoryMng > m_data_factory_mng
Fabrique des données.
String versionStr() const override
Numéro de version de l'application.
Definition Application.h:91
IParallelSuperMng * sequentialParallelSuperMng() override
Gestionnaire un superviseur séquentiel du parallélisme.
Definition Application.h:79
IParallelSuperMng * m_sequential_parallel_super_mng
Gestionnaire du parallélisme séquentiel.
Application(IArcaneMain *)
Construit un superviseur avec les informations d'exécution ex.
IParallelSuperMng * parallelSuperMng() override
Gestionnaire superviseur du parallélisme.
Definition Application.h:78
String objectNamespaceURI() const override
Namespace de l'objet.
Definition Application.h:68
Informations pour l'initialisation du runtime '.Net'.
Interface de l'application.
Interface de la classe de gestion du code.
Definition IArcaneMain.h:54
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:31
Gestionnaire de configuration.
Interface du gestionnaire de fabrique d'une donnée.
Interface d'une fabrique d'une donnée.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:36
Manufacture des classes d'Arcane.
Classe abstraite du superviseur de parallélisme.
Interface d'un service gérant un système d'unité.
Interface d'un service de gestion de l'affinité des coeurs CPU.
Interface d'un gestionnaire de ressource.
Interface d'un gestionnaire de fabriques de services et modules.
Interface du gestionnaire de services.
Definition IServiceMng.h:31
Interface d'une session d'exécution d'un cas.
Definition ISession.h:37
Interface d'un service de récupération des symboles du code source.
Interface du gestionnaire de configuration d'un gestionnnaire de trace.
Interface du gestionnaire de traces.
Implémentation des threads en mode mono-thread.
Référence à une instance.
Encapsulation d'un pointeur avec compteur de référence.
Encapsulation d'un pointeur qui se détruit automatiquement.
Definition ScopedPtr.h:44
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
Informations sur une version.
Definition VersionInfo.h:46
Noeud d'un arbre DOM.
Definition XmlNode.h:51
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
List< ISession * > SessionList
Tableau de sessions.
Collection< IServiceFactoryInfo * > ServiceFactoryInfoCollection
Collection d'informations sur les fabriques de service.
Collection< Internal::IServiceFactory2 * > ServiceFactory2Collection
Collection de fabriques de service.
List< String > StringList
Tableau de chaînes de caractères unicode.
Definition UtilsTypes.h:509
Collection< IModuleFactoryInfo * > ModuleFactoryInfoCollection
Collection d'informations sur les fabriques de module.
Impl::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets non modifiables.
Definition Span.h:1022
Collection< ISession * > SessionCollection
Collection de sessions.