Arcane  v4.1.2.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-2025 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-2025 */
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
43
44/*---------------------------------------------------------------------------*/
45/*---------------------------------------------------------------------------*/
49class ARCANE_IMPL_EXPORT Application
50: public IApplication
51{
52 class CoreApplication;
53
54 public:
55
56 explicit Application(IArcaneMain*);
57 ~Application() override;
58
59 public:
60
61 void build() override;
62 void initialize() override;
63
64 public:
65
66 IBase* objectParent() const override { return nullptr; }
67 String objectNamespaceURI() const override { return m_namespace_uri; }
68 String objectLocalName() const override { return m_local_name; }
69 VersionInfo objectVersion() const override { return VersionInfo(1,0,0); }
70
71 public:
72
73 ITraceMng* traceMng() const override { return m_trace.get(); }
74 IRessourceMng* ressourceMng() const override { return m_ressource_mng; }
75 IServiceMng* serviceMng() const override { return m_service_mng; }
76
82 IIOMng* ioMng() override { return m_io_mng; }
83 IConfigurationMng* configurationMng() const override { return m_configuration_mng; }
84 IDataFactory* dataFactory() override;
85 IDataFactoryMng* dataFactoryMng() const override;
86 const ApplicationInfo& applicationInfo() const override { return m_exe_info; }
87 const ApplicationBuildInfo& applicationBuildInfo() const override;
88 const DotNetRuntimeInitialisationInfo& dotnetRuntimeInitialisationInfo() const override;
89 const AcceleratorRuntimeInitialisationInfo& acceleratorRuntimeInitialisationInfo() const override;
90 String versionStr() const override { return m_version_str; }
92 String mainVersionStr() const override { return m_main_version_str; }
93 String targetinfoStr() const override { return m_targetinfo_str; }
94 String applicationName() const override { return m_application_name; }
95 String codeName() const override { return m_code_name; }
96 String userName() const override { return m_user_name; }
97 String userConfigPath() const override { return m_user_config_path; }
98 IMainFactory* mainFactory() const override { return m_main_factory; }
99
100 ByteConstSpan configBuffer() const override { return asBytes(m_config_bytes.constSpan()); }
101 ByteConstSpan userConfigBuffer() const override { return asBytes(m_user_config_bytes.constSpan()); }
102
103 SessionCollection sessions() override { return m_sessions; }
104 void addSession(ISession* s) override;
105 void removeSession(ISession* s) override;
106
107 ServiceFactory2Collection serviceFactories2() override;
108 ModuleFactoryInfoCollection moduleFactoryInfos() override;
109
110 Ref<ICodeService> getCodeService(const String& file_name) override;
111 bool hasGarbageCollector() const override { return m_has_garbage_collector; }
112
114 {
115 return m_physical_unit_system_service.get();
116 }
117
118 ITraceMngPolicy* getTraceMngPolicy() override { return m_trace_policy; }
119 ITraceMng* createAndInitializeTraceMng(ITraceMng* parent_trace,
120 const String& file_suffix) override;
121
122 private:
124 String m_namespace_uri;
125 String m_local_name;
126 NullThreadImplementation m_null_thread_implementation;
127 IArcaneMain* m_arcane_main = nullptr;
134 IIOMng* m_io_mng = nullptr;
135 IConfigurationMng* m_configuration_mng = nullptr;
141 String m_code_name;
148 bool m_has_garbage_collector = false;
149 ITraceMngPolicy* m_trace_policy = nullptr;
150
151 private:
152
153 bool m_is_init = false;
160 //bool m_is_info_disabled;
161 bool m_is_master = false;
162 Ref<IPhysicalUnitSystemService> m_physical_unit_system_service;
163 Ref<IOnlineDebuggerService> m_online_debugger;
164 Ref<IProfilingService> m_profiling_service;
165
166 IServiceAndModuleFactoryMng* m_service_and_module_factory_mng = nullptr;
167
168 Ref<IProcessorAffinityService> m_processor_affinity_service;
169 Ref<IPerformanceCounterService> m_performance_counter_service;
170 Ref<IParallelSuperMng> m_owned_sequential_parallel_super_mng;
171 std::unique_ptr<CoreApplication> m_core_application;
172
173 private:
174
175 void _openUserConfig();
176 void _initDataInitialisationPolicy();
177 template<typename InterfaceType> Ref<InterfaceType>
178 _tryCreateService(const StringList& names,String* found_name);
179 void _readCodeConfigurationFile();
180 void _setCoreServices();
181};
182
183/*---------------------------------------------------------------------------*/
184/*---------------------------------------------------------------------------*/
185
186} // End namespace Arcane
187
188/*---------------------------------------------------------------------------*/
189/*---------------------------------------------------------------------------*/
190
191#endif
192
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:93
ScopedPtrT< IXmlDocumentHolder > m_config_document
Arbre DOM de la configuration.
IRessourceMng * ressourceMng() const override
Gestionnaire de ressources.
Definition Application.h:74
String userConfigPath() const override
Chemin du répertoire des configurations utilisateur.
Definition Application.h:97
IServiceMng * serviceMng() const override
Gestionnaire de services.
Definition Application.h:75
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:98
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:66
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:94
const ApplicationInfo & applicationInfo() const override
Informations sur l'exécutable.
Definition Application.h:86
String codeName() const override
Nom du code.
Definition Application.h:95
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:96
UniqueArray< Byte > m_user_config_bytes
Fichier contenant la configuration utilisateur.
VersionInfo objectVersion() const override
Numéro de version du service.
Definition Application.h:69
bool m_is_init
true si déjà initialisé
IIOMng * ioMng() override
Gestionnaire des entrées/sorties.
Definition Application.h:82
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:73
String mainVersionStr() const override
Numéro de version principal (sans la béta) de l'application.
Definition Application.h:92
String objectLocalName() const override
Nom local de l'objet.
Definition Application.h:68
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:91
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:83
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:90
IParallelSuperMng * sequentialParallelSuperMng() override
Gestionnaire un superviseur séquentiel du parallélisme.
Definition Application.h:78
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:77
String objectNamespaceURI() const override
Namespace de l'objet.
Definition Application.h:67
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.