Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
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/* IApplication Implementation. */
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/*---------------------------------------------------------------------------*/
47
51class ARCANE_IMPL_EXPORT Application
52: public IApplication
53{
54 class CoreApplication;
55
56 public:
57
58 explicit Application(IArcaneMain*);
59 ~Application() override;
60
61 public:
62
63 void build() override;
64 void initialize() override;
65
66 public:
67
68 IBase* objectParent() const override { return nullptr; }
69 String objectNamespaceURI() const override { return m_namespace_uri; }
70 String objectLocalName() const override { return m_local_name; }
71 VersionInfo objectVersion() const override { return VersionInfo(1, 0, 0); }
72
73 public:
74
75 ITraceMng* traceMng() const override { return m_trace.get(); }
76 IRessourceMng* ressourceMng() const override { return m_ressource_mng; }
77 IServiceMng* serviceMng() const override { return m_service_mng; }
78
84 IIOMng* ioMng() override { return m_io_mng; }
85 IConfigurationMng* configurationMng() const override { return m_configuration_mng; }
86 IDataFactory* dataFactory() override;
87 IDataFactoryMng* dataFactoryMng() const override;
88 const ApplicationInfo& applicationInfo() const override { return m_exe_info; }
89 const ApplicationBuildInfo& applicationBuildInfo() const override;
90 const DotNetRuntimeInitialisationInfo& dotnetRuntimeInitialisationInfo() const override;
91 const AcceleratorRuntimeInitialisationInfo& acceleratorRuntimeInitialisationInfo() const override;
92 String versionStr() const override { return m_version_str; }
94 String mainVersionStr() const override { return m_main_version_str; }
95 String targetinfoStr() const override { return m_targetinfo_str; }
96 String applicationName() const override { return m_application_name; }
97 String codeName() const override { return m_code_name; }
98 String userName() const override { return m_user_name; }
99 String userConfigPath() const override { return m_user_config_path; }
100 IMainFactory* mainFactory() const override { return m_main_factory; }
101
102 ByteConstSpan configBuffer() const override { return asBytes(m_config_bytes.constSpan()); }
103 ByteConstSpan userConfigBuffer() const override { return asBytes(m_user_config_bytes.constSpan()); }
104
105 SessionCollection sessions() override { return m_sessions; }
106 void addSession(ISession* s) override;
107 void removeSession(ISession* s) override;
108
109 ServiceFactory2Collection serviceFactories2() override;
110 ModuleFactoryInfoCollection moduleFactoryInfos() override;
111
112 Ref<ICodeService> getCodeService(const String& file_name) override;
113 bool hasGarbageCollector() const override { return m_has_garbage_collector; }
114
116 {
117 return m_physical_unit_system_service.get();
118 }
119
120 ITraceMngPolicy* getTraceMngPolicy() override { return m_trace_policy; }
121 ITraceMng* createAndInitializeTraceMng(ITraceMng* parent_trace,
122 const String& file_suffix) override;
123
124 private:
125
127 String m_namespace_uri;
128 String m_local_name;
129 NullThreadImplementation m_null_thread_implementation;
130 IArcaneMain* m_arcane_main = nullptr;
137 IIOMng* m_io_mng = nullptr;
138 IConfigurationMng* m_configuration_mng = nullptr;
144 String m_code_name;
151 bool m_has_garbage_collector = false;
152 ITraceMngPolicy* m_trace_policy = nullptr;
153
154 private:
155
156 bool m_is_init = false;
163 //bool m_is_info_disabled;
164 bool m_is_master = false;
165 Ref<IPhysicalUnitSystemService> m_physical_unit_system_service;
166 Ref<IOnlineDebuggerService> m_online_debugger;
167 Ref<IProfilingService> m_profiling_service;
168
169 IServiceAndModuleFactoryMng* m_service_and_module_factory_mng = nullptr;
170
171 Ref<IProcessorAffinityService> m_processor_affinity_service;
172 Ref<IPerformanceCounterService> m_performance_counter_service;
173 Ref<IParallelSuperMng> m_owned_sequential_parallel_super_mng;
174 std::unique_ptr<ConcurrencyApplication> m_core_application;
175
176 private:
177
178 void _openUserConfig();
179 void _initDataInitialisationPolicy();
180 template <typename InterfaceType> Ref<InterfaceType>
181 _tryCreateService(const StringList& names, String* found_name);
182 void _readCodeConfigurationFile();
183 void _setCoreServices();
184};
185
186/*---------------------------------------------------------------------------*/
187/*---------------------------------------------------------------------------*/
188
189} // End namespace Arcane
190
191/*---------------------------------------------------------------------------*/
192/*---------------------------------------------------------------------------*/
193
194#endif
Information for constructing an instance of IApplication.
Application information.
String m_user_config_path
User configuration directory.
void _openUserConfig()
Analyzes the user configuration file.
ReferenceCounter< ITraceMng > m_trace
Trace manager.
ModuleFactoryInfoCollection m_main_module_factory_infos
Array of module factories.
String targetinfoStr() const override
Application compilation options information.
Definition Application.h:95
ScopedPtrT< IXmlDocumentHolder > m_config_document
Configuration DOM tree.
IRessourceMng * ressourceMng() const override
Resource manager.
Definition Application.h:76
String userConfigPath() const override
User configuration directory path.
Definition Application.h:99
IServiceMng * serviceMng() const override
Service manager.
Definition Application.h:77
ApplicationInfo m_exe_info
Executable information.
String m_major_and_minor_version_str
Version M.m.
ITraceMngPolicy * getTraceMngPolicy() override
Trace manager configuration policy.
String m_version_str
Configuration info.
IMainFactory * m_main_factory
Main factory.
IPhysicalUnitSystemService * getPhysicalUnitSystemService() override
Service managing physical unit systems.
IMainFactory * mainFactory() const override
Main factory.
SessionList m_sessions
List of sessions.
Ref< InterfaceType > _tryCreateService(const StringList &names, String *found_name)
IBase * objectParent() const override
Parent of this object.
Definition Application.h:68
SessionCollection sessions() override
List of sessions.
String m_user_name
User name.
IRessourceMng * m_ressource_mng
Resource manager.
String applicationName() const override
Application name.
Definition Application.h:96
const ApplicationInfo & applicationInfo() const override
Executable information.
Definition Application.h:88
String codeName() const override
Code name.
Definition Application.h:97
XmlNode m_user_config_root_element
User configuration root element.
String m_main_version_str
Version in Major.minor.beta format.
void initialize() override
Initializes the instance. The instance is not usable until this method has been called.
String userName() const override
User name.
Definition Application.h:98
UniqueArray< Byte > m_user_config_bytes
File containing the user configuration.
VersionInfo objectVersion() const override
Service version number.
Definition Application.h:71
bool m_is_init
true if already initialized
IIOMng * ioMng() override
Input/output manager.
Definition Application.h:84
void build() override
Constructs the instance members. The instance is not usable until this method has been called....
ITraceMng * traceMng() const override
Trace manager.
Definition Application.h:75
String mainVersionStr() const override
Main application version number (without beta).
Definition Application.h:94
String objectLocalName() const override
Local name of the object.
Definition Application.h:70
XmlNode m_config_root_element
Configuration root element.
String majorAndMinorVersionStr() const override
Major and minor version number in M.m format.
Definition Application.h:93
String m_application_name
Application name.
String m_targetinfo_str
Configuration info.
ScopedPtrT< IXmlDocumentHolder > m_user_config_document
User configuration DOM tree.
ServiceFactoryInfoCollection m_main_service_factory_infos
Array of service factories.
bool hasGarbageCollector() const override
Indicates that certain objects are managed via a garbage collector.
IConfigurationMng * configurationMng() const override
Execution configuration manager.
Definition Application.h:85
Ref< IParallelSuperMng > m_parallel_super_mng
Parallelism manager.
IServiceMng * m_service_mng
Service manager.
IIOMng * m_io_mng
Input/output manager.
UniqueArray< Byte > m_config_bytes
File containing the configuration.
Ref< IDataFactoryMng > m_data_factory_mng
Data factory.
String versionStr() const override
Application version number.
Definition Application.h:92
IParallelSuperMng * sequentialParallelSuperMng() override
Sequential parallelism supervisor manager.
Definition Application.h:80
IParallelSuperMng * m_sequential_parallel_super_mng
Sequential parallelism manager.
Application(IArcaneMain *)
Constructs a supervisor with execution information, e.g.
IParallelSuperMng * parallelSuperMng() override
Supervisory parallelism manager.
Definition Application.h:79
String objectNamespaceURI() const override
Namespace of the object.
Definition Application.h:69
Information for the initialization of the '.Net' runtime.
Application interface.
Interface of the code management class.
Definition IArcaneMain.h:55
Interface of the base class for main arcane objects.
Definition IBase.h:32
Configuration manager.
Interface of the data factory manager.
Interface of a data factory.
Interface of the input/output manager.
Definition IIOMng.h:37
Factory for Arcane classes.
Abstract class of the parallelism supervisor.
Interface of a service managing a unit system.
Interface of a CPU core affinity management service.
Interface of a resource manager.
Interface of a service and module factory manager.
Service manager interface.
Definition IServiceMng.h:32
Interface for a case execution session.
Definition ISession.h:38
Interface of a source code symbol retrieval service.
Interface for the configuration manager of a trace manager.
Implementation of threads in single-threaded mode.
Reference to an instance.
Encapsulation of a pointer with a reference counter.
Encapsulation of an automatically destructing pointer.
Definition ScopedPtr.h:44
1D data vector with value semantics (STL style).
Information about a version.
Definition VersionInfo.h:47
Node of a DOM tree.
Definition XmlNode.h:51
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
List< ISession * > SessionList
Array of sessions.
Collection< IServiceFactoryInfo * > ServiceFactoryInfoCollection
Collection of service factory information.
Collection< Internal::IServiceFactory2 * > ServiceFactory2Collection
Collection of service factories.
List< String > StringList
Unicode string list.
Definition UtilsTypes.h:509
Collection< IModuleFactoryInfo * > ModuleFactoryInfoCollection
Collection of module factory information.
Impl::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converts the view into an array of non-modifiable bytes.
Definition Span.h:1032
Collection< ISession * > SessionCollection
Collection of sessions.