Arcane  v3.16.0.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-2025 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-2025 */
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 Arcane::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;
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
Implémentation basique de 'ISerializer'.
Interface d'un message de sérialisation entre IMessagePassingMng.
Message de sérialisation utilisant un BasicSerializer.
void setFinished(bool v) override
Positionne l'état 'fini' du message.
Int32 destRank() const override
Rang du destinataire (si isSend() est vrai) ou envoyeur.
MessageId _internalMessageId() const override
Identificant du message.
eStrategy strategy() const override
Stratégie utilisée pour les envois/réceptions.
eMessageType m_old_message_type
Type du message (obsolète)
MessageRank source() const override
Rang de l'envoyeur du message.
MessageId m_message_id
MessageId associé (peut être nul)
void setInternalTag(MessageTag tag) override
Positionne un tag interne pour le message.
bool isSend() const override
true s'il faut envoyer, false s'il faut recevoir
BasicSerializer * m_buffer
Tampon contenant les infos.
bool isProcessed() const override
Indique si le message a déjà été traité.
MessageRank destination() const override
Rang du destinataire (si isSend() est vrai) ou de l'envoyeur.
MessageRank m_dest_rank
Rang du destinataire du message.
ePointToPointMessageType m_message_type
Type du message.
static MessageTag defaultTag()
Tag par défaut pour les messages de sérialisation.
bool finished() const override
true si le message est terminé
eMessageType messageType() const override
Type du message.
MessageTag internalTag() const override
Tag interne du message.
bool m_is_processed
Numéro du message lorsqu'on utilise plusieurs messages.
Int32 origRank() const override
Rang de l'envoyeur du message Voir aussi destRank() pour une interprétation suivant la valeur de isSe...
MessageRank m_orig_rank
Rang de l'expéditeur de la requête.
Int32 tag() 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.