Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
driverlib/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-2012 */
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
25#include "arcane/std/ArcaneSession.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36class ArcaneCodeService
37: public CodeService
38{
39 public:
40
41 ArcaneCodeService(const ServiceBuildInfo& sbi);
42 virtual ~ArcaneCodeService();
43
44 public:
45
46 virtual bool parseArgs(StringList& args);
47 virtual ISession* createSession();
48 virtual void initCase(ISubDomain* sub_domain, bool is_continue);
49
50 public:
51
52 void build() {}
53
54 protected:
55
56 virtual void _preInitializeSubDomain(ISubDomain* sd);
57
58 private:
59};
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
63
64ArcaneCodeService::
65ArcaneCodeService(const ServiceBuildInfo& sbi)
66: CodeService(sbi)
67{
68 _addExtension(String("arc"));
69}
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
73
74ArcaneCodeService::
75~ArcaneCodeService()
76{
77}
78
79/*---------------------------------------------------------------------------*/
80/*---------------------------------------------------------------------------*/
81
82void ArcaneCodeService::
83_preInitializeSubDomain(ISubDomain*)
84{
85}
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
91initCase(ISubDomain* sub_domain, bool is_continue)
92{
93 {
94 TimeLoopReader stl(_application());
95 stl.readTimeLoops();
96 stl.registerTimeLoops(sub_domain);
97 stl.setUsedTimeLoop(sub_domain);
98 }
99 CodeService::initCase(sub_domain, is_continue);
100 if (sub_domain->parallelMng()->isMasterIO())
101 sub_domain->session()->writeExecInfoFile();
102}
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
109{
110 ArcaneSession* session = new ArcaneSession(_application());
111 session->build();
112 _application()->addSession(session);
113 return session;
114}
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
118
121{
122 ARCANE_UNUSED(args);
123 return false;
124}
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
128
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
133
134} // namespace Arcane
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
#define ARCANE_REGISTER_APPLICATION_FACTORY(aclass, ainterface, aname)
Registers a factory service for the class aclass.
virtual bool parseArgs(StringList &args)
Parses the command line arguments.
virtual ISession * createSession()
Creates a session.
virtual void initCase(ISubDomain *sub_domain, bool is_continue)
Initializes the session session.
virtual void build()
Constructs the instance members. The instance is not usable until this method has been called....
Abstract class for a code service.
Definition CodeService.h:46
void initCase(ISubDomain *sub_domain, bool is_continue) override
Initializes the session session.
Interface of a case loader.
virtual bool isMasterIO() const =0
true if the instance is a master I/O manager.
Interface for a case execution session.
Definition ISession.h:38
virtual void writeExecInfoFile()=0
Writes the execution information file.
Interface of the subdomain manager.
Definition ISubDomain.h:75
virtual IParallelMng * parallelMng()=0
Returns the parallelism manager.
virtual ISession * session() const =0
Session.
Structure containing the information to create a service.
Time loop loading functor.
void setUsedTimeLoop(ISubDomain *sd)
Positions the used time loop in the manager sd.
void readTimeLoops()
Performs the reading of available time loops.
void registerTimeLoops(ISubDomain *sd)
Registers the list of time loops in the manager sd.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
List< String > StringList
Unicode string list.
Definition UtilsTypes.h:509