Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
impl/ArcaneCodeService.cc
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/* ArcaneCodeService.cc (C) 2000-2019 */
9/* */
10/* Arcane generic code service. */
11/* This service is a local copy of the test service for the driver */
12/*---------------------------------------------------------------------------*/
13/*---------------------------------------------------------------------------*/
14
15#include "arcane/core/CodeService.h"
16#include "arcane/utils/ArcanePrecomp.h"
17
18#include "arcane/core/ISession.h"
19#include "arcane/core/ISubDomain.h"
20#include "arcane/core/IParallelMng.h"
21#include "arcane/core/Service.h"
22
23#include "arcane/impl/TimeLoopReader.h"
24#include "arcane/impl/ArcaneSession.h"
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29namespace Arcane
30{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
36: public CodeService
37{
38 public:
39
40 ArcaneCodeService(const ServiceBuildInfo& sbi);
41 virtual ~ArcaneCodeService();
42
43 public:
44
45 virtual bool parseArgs(StringList& args);
47 virtual void initCase(ISubDomain* sub_domain, bool is_continue);
48
49 public:
50
51 void build() {}
52
53 protected:
54
55 virtual void _preInitializeSubDomain(ISubDomain* sd);
56
57 public:
58
59 static Internal::ServiceInfo service_info;
60};
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64
65Internal::ServiceInfo
66ArcaneCodeService::service_info("ArcaneCodeService", VersionInfo(1, 0, 1),
67 IServiceInfo::Dim1 | IServiceInfo::Dim2 | IServiceInfo::Dim3);
68
69/*---------------------------------------------------------------------------*/
70/*---------------------------------------------------------------------------*/
71
72extern "C++" ARCANE_IMPL_EXPORT Ref<ICodeService>
73createArcaneCodeService(IApplication* app)
74{
75 ServiceBuildInfoBase s(app);
76 auto x = new ArcaneCodeService(ServiceBuildInfo(&ArcaneCodeService::service_info, s));
77 x->build();
78 return makeRef<ICodeService>(x);
79}
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84ArcaneCodeService::
85ArcaneCodeService(const ServiceBuildInfo& sbi)
86: CodeService(sbi)
87{
88 _addExtension(String("arc"));
89}
90
91/*---------------------------------------------------------------------------*/
92/*---------------------------------------------------------------------------*/
93
94ArcaneCodeService::
95~ArcaneCodeService()
96{
97}
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102void ArcaneCodeService::
103_preInitializeSubDomain(ISubDomain*)
104{
105}
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
109
111initCase(ISubDomain* sub_domain, bool is_continue)
112{
113 {
114 TimeLoopReader stl(_application());
115 stl.readTimeLoops();
116 stl.registerTimeLoops(sub_domain);
117 stl.setUsedTimeLoop(sub_domain);
118 }
119 CodeService::initCase(sub_domain, is_continue);
120 if (sub_domain->parallelMng()->isMasterIO())
121 sub_domain->session()->writeExecInfoFile();
122}
123
124/*---------------------------------------------------------------------------*/
125/*---------------------------------------------------------------------------*/
126
129{
130 ArcaneSession* session = new ArcaneSession(_application());
131 session->build();
132 _application()->addSession(session);
133 return session;
134}
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
138
141{
142 ARCANE_UNUSED(args);
143 return false;
144}
145
146/*---------------------------------------------------------------------------*/
147/*---------------------------------------------------------------------------*/
148
149} // namespace Arcane
150
151/*---------------------------------------------------------------------------*/
152/*---------------------------------------------------------------------------*/
virtual void initCase(ISubDomain *sub_domain, bool is_continue)
Initializes the session session.
virtual bool parseArgs(StringList &args)
Parses the command line arguments.
virtual bool parseArgs(StringList &args)
Parses the command line arguments.
virtual ISession * createSession()
Creates a session.
virtual ISession * createSession()
Creates a session.
virtual void initCase(ISubDomain *sub_domain, bool is_continue)
Initializes the session session.
Abstract class for a code service.
Definition CodeService.h:46
void initCase(ISubDomain *sub_domain, bool is_continue) override
Initializes the session session.
Interface for a case execution session.
Definition ISession.h:38
Interface of the subdomain manager.
Definition ISubDomain.h:75
Information about a service.
Definition ServiceInfo.h:51
Structure containing the information to create a service.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
List< String > StringList
Unicode string list.
Definition UtilsTypes.h:509
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Creates a reference on a pointer.