Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
BasicReader.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* BasicReader.h (C) 2000-2024 */
9/* */
10/* Lecteur simple. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_STD_INTERNAL_BASICREADER_H
14#define ARCANE_STD_INTERNAL_BASICREADER_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/std/internal/BasicReaderWriter.h"
19
20#include <map>
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::impl
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33class BasicReader
34: public BasicReaderWriterCommon
35, public IDataReader
36, public IDataReader2
37{
38 public:
39
45 {
46 public:
47
48 virtual ~IItemGroupFinder() = default;
49 virtual ItemGroup getWantedGroup(VariableMetaData* vmd) = 0;
50 };
51
52 public:
53
54 BasicReader(IApplication* app, IParallelMng* pm, Int32 forced_rank_to_read,
55 const String& path, bool want_parallel);
56
57 public:
58
59 void beginRead(const VariableCollection& vars) override;
60 void endRead() override {}
61 String metaData() override;
62 void read(IVariable* v, IData* data) override;
63
64 void fillMetaData(ByteArray& bytes) override;
65 void beginRead(const DataReaderInfo& infos) override;
66 void read(const VariableDataReadInfo& infos) override;
67
68 public:
69
70 void initialize();
71 void setItemGroupFinder(IItemGroupFinder* group_finder)
72 {
73 m_item_group_finder = group_finder;
74 }
75 void fillComparisonHash(std::map<String, String>& comparison_hash_map);
76 IHashAlgorithm* comparisonHashAlgorithm() const { return m_comparison_hash_algorithm.get(); }
77
78 private:
79
80 bool m_want_parallel = false;
81 Integer m_nb_written_part = 0;
82 Int32 m_version = -1;
83
84 Int32 m_first_rank_to_read = -1;
85 Int32 m_nb_rank_to_read = -1;
86 Int32 m_forced_rank_to_read = -1;
87
88 std::map<String, Ref<ParallelDataReader>> m_parallel_data_readers;
89 UniqueArray<Ref<IGenericReader>> m_global_readers;
90 IItemGroupFinder* m_item_group_finder;
92 Ref<IDataCompressor> m_data_compressor;
93 Ref<IHashAlgorithm> m_comparison_hash_algorithm;
94
95 private:
96
97 void _directReadVal(VariableMetaData* varmd, IData* data);
98
100 void _setRanksToRead();
101 Ref<IGenericReader> _readOwnMetaDataAndCreateReader(Int32 rank);
102};
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107} // namespace Arcane::impl
108
109/*---------------------------------------------------------------------------*/
110/*---------------------------------------------------------------------------*/
111
112#endif
Informations de relecture des données.
Interface de l'application.
Interface de lecture des données d'une variable (Version 2)
Interface de lecture des données d'une variable.
Definition IDataReader.h:41
Interface d'une donnée.
Definition IData.h:33
Interface d'un algorithme de hashage.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une variable.
Definition IVariable.h:56
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Référence à une instance.
Chaîne de caractères unicode.
Collection de variables.
Informations de relecture des données d'une variable.
Meta-données sur une variable.
Interface pour retrouver le groupe associée à une variable à partir de ces meta-données.
Definition BasicReader.h:45
Ref< KeyValueTextReader > m_forced_rank_to_read_text_reader
Lecteur pour le premier rang à lire.
Definition BasicReader.h:91
String metaData() override
Méta-données.
void fillComparisonHash(std::map< String, String > &comparison_hash_map)
Remplit l'argument avec des couples (nom_de_variable,valeur du hash).
void read(IVariable *v, IData *data) override
Lit les données data de la variable var.
void fillMetaData(ByteArray &bytes) override
Remplit bytes avec le contenu des méta-données.
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
Definition UtilsTypes.h:208
std::int32_t Int32
Type entier signé sur 32 bits.