123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- // Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- /*!
- * @file ParticipantGenericMessage.h
- */
- #ifndef _FASTDDS_RTPS_SECURITY_COMMON_PARTICIPANTGENERICMESSAGE_H_
- #define _FASTDDS_RTPS_SECURITY_COMMON_PARTICIPANTGENERICMESSAGE_H_
- #include <fastdds/rtps/common/Guid.h>
- #include <fastdds/rtps/common/Token.h>
- namespace eprosima {
- namespace fastrtps {
- namespace rtps {
- namespace security {
- class MessageIdentity
- {
- public:
- MessageIdentity() : sequence_number_(0) {}
- MessageIdentity(const MessageIdentity& mi) :
- source_guid_(mi.source_guid_),
- sequence_number_(mi.sequence_number_)
- {
- }
- MessageIdentity(MessageIdentity&& mi) :
- source_guid_(std::move(mi.source_guid_)),
- sequence_number_(mi.sequence_number_)
- {
- }
- MessageIdentity& operator=(const MessageIdentity& mi)
- {
- source_guid_ = mi.source_guid_;
- sequence_number_ = mi.sequence_number_;
- return *this;
- }
- MessageIdentity& operator=(MessageIdentity&& mi)
- {
- source_guid_ = std::move(mi.source_guid_);
- sequence_number_ = mi.sequence_number_;
- return *this;
- }
- void source_guid(const GUID_t& source_guid)
- {
- source_guid_ = source_guid;
- }
- void source_guid(GUID_t&& source_guid)
- {
- source_guid_ = std::move(source_guid);
- }
- const GUID_t& source_guid() const
- {
- return source_guid_;
- }
- GUID_t& source_guid()
- {
- return source_guid_;
- }
- void sequence_number(int64_t sequence_number)
- {
- sequence_number_ = sequence_number;
- }
- int64_t sequence_number() const
- {
- return sequence_number_;
- }
- int64_t& sequence_number()
- {
- return sequence_number_;
- }
- private:
- GUID_t source_guid_;
- int64_t sequence_number_;
- };
- class MessageIdentityHelper
- {
- public:
- static size_t serialized_size(const MessageIdentity& /*message*/, size_t current_alignment = 0)
- {
- size_t initial_alignment = current_alignment;
- current_alignment += 16;
- current_alignment += alignment(current_alignment, 8) + 8;
- return current_alignment - initial_alignment;
- }
- private:
- inline static size_t alignment(size_t current_alignment, size_t dataSize) { return (dataSize - (current_alignment % dataSize)) & (dataSize-1);}
- };
- class ParticipantGenericMessage
- {
- public:
- ParticipantGenericMessage() {}
- ParticipantGenericMessage(const ParticipantGenericMessage& message) :
- message_identity_(message.message_identity_),
- related_message_identity_(message.related_message_identity_),
- destination_participant_key_(message.destination_participant_key_),
- destination_endpoint_key_(message.destination_endpoint_key_),
- source_endpoint_key_(message.source_endpoint_key_),
- message_class_id_(message.message_class_id_),
- message_data_(message.message_data_)
- {}
- ParticipantGenericMessage(ParticipantGenericMessage&& message) :
- message_identity_(std::move(message.message_identity_)),
- related_message_identity_(std::move(message.related_message_identity_)),
- destination_participant_key_(std::move(message.destination_participant_key_)),
- destination_endpoint_key_(std::move(message.destination_endpoint_key_)),
- source_endpoint_key_(std::move(message.source_endpoint_key_)),
- message_class_id_(std::move(message.message_class_id_)),
- message_data_(std::move(message.message_data_))
- {}
- ParticipantGenericMessage& operator=(const ParticipantGenericMessage& message)
- {
- message_identity_ = message.message_identity_;
- related_message_identity_ = message.related_message_identity_;
- destination_participant_key_ = message.destination_participant_key_;
- destination_endpoint_key_ = message.destination_endpoint_key_;
- source_endpoint_key_ = message.source_endpoint_key_;
- message_class_id_ = message.message_class_id_;
- message_data_ = message.message_data_;
- return *this;
- }
- ParticipantGenericMessage& operator=(ParticipantGenericMessage&& message)
- {
- message_identity_ = std::move(message.message_identity_);
- related_message_identity_ = std::move(message.related_message_identity_);
- destination_participant_key_ = std::move(message.destination_participant_key_);
- destination_endpoint_key_ = std::move(message.destination_endpoint_key_);
- source_endpoint_key_ = std::move(message.source_endpoint_key_);
- message_class_id_ = std::move(message.message_class_id_);
- message_data_ = std::move(message.message_data_);
- return *this;
- }
- void message_identity(const MessageIdentity& message_identity)
- {
- message_identity_ = message_identity;
- }
- void message_identity(MessageIdentity&& message_identity)
- {
- message_identity_ = std::move(message_identity);
- }
- const MessageIdentity& message_identity() const
- {
- return message_identity_;
- }
- MessageIdentity& message_identity()
- {
- return message_identity_;
- }
- void related_message_identity(const MessageIdentity& related_message_identity)
- {
- related_message_identity_ = related_message_identity;
- }
- void related_message_identity(MessageIdentity&& related_message_identity)
- {
- related_message_identity_ = std::move(related_message_identity);
- }
- const MessageIdentity& related_message_identity() const
- {
- return related_message_identity_;
- }
- MessageIdentity& related_message_identity()
- {
- return related_message_identity_;
- }
- void destination_participant_key(const GUID_t& destination_participant_key)
- {
- destination_participant_key_ = destination_participant_key;
- }
- void destination_participant_key(GUID_t&& destination_participant_key)
- {
- destination_participant_key_ = std::move(destination_participant_key);
- }
- const GUID_t& destination_participant_key() const
- {
- return destination_participant_key_;
- }
- GUID_t& destination_participant_key()
- {
- return destination_participant_key_;
- }
- void destination_endpoint_key(const GUID_t& destination_endpoint_key)
- {
- destination_endpoint_key_ = destination_endpoint_key;
- }
- void destination_endpoint_key(GUID_t&& destination_endpoint_key)
- {
- destination_endpoint_key_ = std::move(destination_endpoint_key);
- }
- const GUID_t& destination_endpoint_key() const
- {
- return destination_endpoint_key_;
- }
- GUID_t& destination_endpoint_key()
- {
- return destination_endpoint_key_;
- }
- void source_endpoint_key(const GUID_t& source_endpoint_key)
- {
- source_endpoint_key_ = source_endpoint_key;
- }
- void source_endpoint_key(GUID_t&& source_endpoint_key)
- {
- source_endpoint_key_ = std::move(source_endpoint_key);
- }
- const GUID_t& source_endpoint_key() const
- {
- return source_endpoint_key_;
- }
- GUID_t& source_endpoint_key()
- {
- return source_endpoint_key_;
- }
- void message_class_id(const std::string& message_class_id)
- {
- message_class_id_ = message_class_id;
- }
- void message_class_id(std::string&& message_class_id)
- {
- message_class_id_ = std::move(message_class_id);
- }
- const std::string& message_class_id() const
- {
- return message_class_id_;
- }
- std::string& message_class_id()
- {
- return message_class_id_;
- }
- void message_data(const DataHolderSeq& message_data)
- {
- message_data_ = message_data;
- }
- void message_data(DataHolderSeq&& message_data)
- {
- message_data_ = std::move(message_data);
- }
- const DataHolderSeq& message_data() const
- {
- return message_data_;
- }
- DataHolderSeq& message_data()
- {
- return message_data_;
- }
- private:
- MessageIdentity message_identity_;
- MessageIdentity related_message_identity_;
- GUID_t destination_participant_key_;
- GUID_t destination_endpoint_key_;
- GUID_t source_endpoint_key_;
- std::string message_class_id_;
- DataHolderSeq message_data_;
- };
- class ParticipantGenericMessageHelper
- {
- public:
- static size_t serialized_size(const ParticipantGenericMessage& message, size_t current_alignment = 0)
- {
- size_t initial_alignment = current_alignment;
- current_alignment += MessageIdentityHelper::serialized_size(message.message_identity(), current_alignment);
- current_alignment += MessageIdentityHelper::serialized_size(message.related_message_identity(), current_alignment);
- current_alignment += 16 * 3;
- current_alignment += 4 + alignment(current_alignment, 4) + message.message_class_id().size() + 1;
- current_alignment += DataHolderHelper::serialized_size(message.message_data(), current_alignment);
- return current_alignment - initial_alignment;
- }
- private:
- inline static size_t alignment(size_t current_alignment, size_t dataSize) { return (dataSize - (current_alignment % dataSize)) & (dataSize-1);}
- };
- } //namespace security
- } //namespace rtps
- } //namespace fastrtps
- } //namespace eprosima
- #endif // _FASTDDS_RTPS_SECURITY_COMMON_PARTICIPANTGENERICMESSAGE_H_
|