Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
BasicSerializeMessage.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* BasicSerialize.h (C) 2000-2020 */
9/* */
10/* Message utilisant un BasicSerializer. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_MESSAGEPASSING_BASICSERIALIZEMESSAGE_H
13#define ARCCORE_MESSAGEPASSING_BASICSERIALIZEMESSAGE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/serialize/BasicSerializer.h"
18#include "arccore/message_passing/ISerializeMessage.h"
19#include "arccore/message_passing/MessageRank.h"
20#include "arccore/message_passing/MessageTag.h"
21#include "arccore/message_passing/MessageId.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arccore::MessagePassing::internal
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
48class ARCCORE_MESSAGEPASSING_EXPORT BasicSerializeMessage
49: public ISerializeMessage
50{
51 public:
52
53 static const Int32 DEFAULT_SERIALIZE_TAG_VALUE = 101;
54
56 static MessageTag defaultTag() { return MessageTag(DEFAULT_SERIALIZE_TAG_VALUE); }
57
58 protected:
59
60
61 public:
62
63 ~BasicSerializeMessage() override;
64 BasicSerializeMessage& operator=(const BasicSerializeMessage&) = delete;
66
67 protected:
68
75 BasicSerializer* serializer);
78 BasicSerializer* serializer);
79
80 BasicSerializeMessage(MessageRank orig_rank,MessageId message_id,
81 BasicSerializer* serializer);
82 public:
83
85 create(MessageRank source,MessageRank destination,ePointToPointMessageType type);
87 create(MessageRank source,MessageRank destination,MessageTag tag,
90 create(MessageRank source,MessageId message_id);
91
92 public:
93
94 bool isSend() const override { return m_is_send; }
95 eMessageType messageType() const override { return m_old_message_type; }
96 Int32 destRank() const override { return m_dest_rank.value(); }
97 Int32 origRank() const override { return m_orig_rank.value(); }
98 MessageRank destination() const override { return m_dest_rank; }
99 MessageRank source() const override { return m_orig_rank; }
100 ISerializer* serializer() override { return m_buffer; }
101 bool finished() const override { return m_finished; }
102 void setFinished(bool v) override { m_finished = v; }
103 void setTag(Int32 tag) override { m_tag = MessageTag(tag); }
104 Int32 tag() const override { return m_tag.value(); }
105 void setInternalTag(MessageTag tag) override { m_tag = tag; }
106 MessageTag internalTag() const override { return m_tag; }
107 MessageId _internalMessageId() const override { return m_message_id; }
108 void setStrategy(eStrategy strategy) override;
109 eStrategy strategy() const override { return m_strategy; }
110 bool isProcessed() const override { return m_is_processed; }
111
112 public:
113
114 BasicSerializer& buffer() { return *m_buffer; }
115 BasicSerializer* trueSerializer() const { return m_buffer; }
116 Int32 messageNumber() const { return m_message_number; }
117 void setMessageNumber(Int32 v) { m_message_number = v; }
118 void setIsProcessed(bool v) { m_is_processed = v; }
119 ePointToPointMessageType _internalMessageType() const { return m_message_type; }
120
121 protected:
122
123 static ePointToPointMessageType _toP2PType(eMessageType mtype);
124 static eMessageType _toMessageType(ePointToPointMessageType mtype);
125
126 private:
127
130 MessageTag m_tag = defaultTag();
131 eMessageType m_old_message_type;
133 eStrategy m_strategy = eStrategy::Default;
135 BasicSerializer* m_buffer = nullptr;
136 bool m_finished = false;
138 Int32 m_message_number = 0;
139 bool m_is_processed = false;
140
141 private:
142
143 void _init();
144};
145
146/*---------------------------------------------------------------------------*/
147/*---------------------------------------------------------------------------*/
148
149} // End namespace Arccore::MessagePassing
150
151/*---------------------------------------------------------------------------*/
152/*---------------------------------------------------------------------------*/
153
154#endif
155
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Implémentation basique de 'ISerializer'.
Message de sérialisation utilisant un BasicSerializer.
Int32 origRank() const override
Rang de l'envoyeur du message Voir aussi destRank() pour une interprétation suivant la valeur de isSe...
MessageRank destination() const override
Rang du destinataire (si isSend() est vrai) ou de l'envoyeur.
eMessageType m_old_message_type
Type du message (obsolète)
void setFinished(bool v) override
Positionne l'état 'fini' du message.
eStrategy strategy() const override
Stratégie utilisée pour les envois/réceptions.
Int32 tag() const override
Tag interne du message.
static MessageTag defaultTag()
Tag par défaut pour les messages de sérialisation.
void setInternalTag(MessageTag tag) override
Positionne un tag interne pour le message.
MessageRank m_dest_rank
Rang du destinataire du message.
ePointToPointMessageType m_message_type
Type du message.
eMessageType messageType() const override
Type du message.
bool isSend() const override
true s'il faut envoyer, false s'il faut recevoir
MessageId _internalMessageId() const override
Identificant du message.
Int32 destRank() const override
Rang du destinataire (si isSend() est vrai) ou envoyeur.
bool finished() const override
true si le message est terminé
MessageId m_message_id
MessageId associé (peut être nul)
bool isProcessed() const override
Indique si le message a déjà été traité.
MessageRank m_orig_rank
Rang de l'expéditeur de la requête.
MessageRank source() const override
Rang de l'envoyeur du message.
MessageTag internalTag() const override
Tag interne du message.
Référence à une instance.
ePointToPointMessageType
Type de message point à point.
eMessageType
Flot sur lequel on envoie les messages.
std::int32_t Int32
Type entier signé sur 32 bits.