14#include "arcane/utils/NotSupportedException.h"
15#include "arcane/utils/HashTableMap.h"
16#include "arcane/utils/Collection.h"
18#include "arcane/VariableTypes.h"
19#include "arcane/ItemEnumerator.h"
20#include "arcane/ItemPrinter.h"
21#include "arcane/ISerializer.h"
22#include "arcane/IItemFamily.h"
23#include "arcane/ItemVector.h"
24#include "arcane/MeshToMeshTransposer.h"
25#include "arcane/ItemFamilySerializeArgs.h"
26#include "arcane/IParallelMng.h"
28#include "arcane/IMesh.h"
29#include "arcane/IVariableMng.h"
30#include "arcane/ISubDomain.h"
32#include "arcane/mesh/ItemFamilyVariableSerializer.h"
47class ItemFamilyExchange;
58const Integer VARIABLE_MAGIC_NUMBER = 0x3a9e4324;
63ItemFamilyVariableSerializer::
64ItemFamilyVariableSerializer(IItemFamily* family)
65: TraceAccessor(family->traceMng())
66, m_item_family(family)
73ItemFamilyVariableSerializer::
74~ItemFamilyVariableSerializer()
81void ItemFamilyVariableSerializer::
118 debug(
Trace::High) <<
"Add variable " <<
var->fullName() <<
" to serialize";
119 m_variables_to_exchange.add(
var);
123 debug() <<
"Number of variables to serialize: " << m_variables_to_exchange.size();
132void ItemFamilyVariableSerializer::
135 switch(
sbuf->mode()){
136 case ISerializer::ModeReserve:
138 sbuf->reserveInteger(1);
139 sbuf->reserveInteger(1);
141 case ISerializer::ModePut:
146 case ISerializer::ModeGet:
150 ARCANE_FATAL(
"Internal error: bad magic number expected={0} found={1}",
159 ARCANE_FATAL(
"Bad value for received_items family={0} n={1} expected={2}",
172void ItemFamilyVariableSerializer::
176 switch(
sbuf->mode()){
177 case ISerializer::ModeReserve:
181 case ISerializer::ModePut:
184 case ISerializer::ModeGet:
189 ARCANE_FATAL(
"Incoherent variable var={0} expected={1}",
203void ItemFamilyVariableSerializer::
209 bool is_recv = (
sbuf->mode()==ISerializer::ModeGet);
218 info(4) <<
"-- Serializing variable " <<
var->fullName()
219 <<
" group=" <<
var->itemGroup().name()
220 <<
" (n=" <<
var->itemGroup().size() <<
")"
221 <<
" mode=" << (
int)
sbuf->mode()
222 <<
" target_rank=" << args.
rank();
224 _checkSerializationVariable(
sbuf,
var);
233 if (
var->itemFamily() != m_item_family){
248 if (
var->isPartial())
254 if (
var->isPartial())
282void ItemFamilyVariableSerializer::
290 case ISerializer::ModeReserve:
291 case ISerializer::ModePut:
296 for( Integer i=0, n=
local_ids.size(); i<n; ++i ){
306 if (mode==ISerializer::ModeReserve){
318 case ISerializer::ModeGet:
336 for( Integer i=0; i<
nb_item; ++i ){
344 indexes[i] = data->value();
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface d'une famille d'entités.
Interface du gestionnaire de variables.
Interface d'une variable.
Arguments des callbacks de sérialisation des familles d'entités.
Int32 rank() const
Rang de la source ou de la destination.
Int32ConstArrayView localIds() const
Indices locaux des entités. En sérialisation, il s'agit des indices locaux des entités envoyées au ra...
ISerializer * serializer() const
Sérialiseur associé
Groupe d'entités de maillage.
Integer size() const
Nombre d'éléments du groupe.
Classe utilitaire pour imprimer les infos sur une entité.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
Vue constante d'un tableau de type T.
Interface d'un sérialiseur.
eMode
Mode de fonctionnement du sérialiseur.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
bool arcaneIsDebug()
Vrai si la macro ARCANE_DEBUG est définie.
@ DT_Int64
Donnée de type entier 64 bits.
@ Highest
Niveau le plus élevé
Int32 Integer
Type représentant un entier.