-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSFTMessage.hpp
More file actions
65 lines (40 loc) · 1.69 KB
/
Copy pathSFTMessage.hpp
File metadata and controls
65 lines (40 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef SFT_MESSAGE_HPP
#define SFT_MESSAGE_HPP
#include <array>
#include <cstddef>
#include <cstdint>
#include <stdint.h>
#include <ucdr/microcdr.h>
class SFTMessage {
using MASK_DATATYPE = uint32_t;
using GUID_DATATYPE = uint64_t;
public:
static constexpr size_t FULL_MASK_LENGTH = 7;
static constexpr bool ENABLE_SELECTIVE_REQUEST = true;
mutable MASK_DATATYPE object_field_mask;
explicit SFTMessage(MASK_DATATYPE field_mask) : object_field_mask(field_mask) {}
explicit SFTMessage() : object_field_mask(0) {}
SFTMessage(const SFTMessage &other) { object_field_mask = other.object_field_mask; }
[[nodiscard]] MASK_DATATYPE get_object_field_mask() const {
return object_field_mask;
}
uint64_t id = 0;
virtual ~SFTMessage() = default;
virtual MASK_DATATYPE generate_field_mask() const = 0;
virtual void reset_access_counts() = 0;
virtual SFTMessage *clone_into(void *buffer) const = 0;
virtual SFTMessage *clone() const = 0;
virtual void serialize_partial(ucdrBuffer *writer, MASK_DATATYPE field_mask) const = 0;
virtual void serialize_all(ucdrBuffer *writer) const = 0;
virtual void deserialize_all(ucdrBuffer *reader) = 0;
virtual size_t max_serialized_size_no_mask(size_t size) const = 0;
virtual size_t max_serialized_size(size_t size) const = 0;
virtual MASK_DATATYPE deserialize_partial(ucdrBuffer *reader, MASK_DATATYPE field_mask) = 0;
virtual uint32_t get_message_id() const = 0;
virtual void set_message_id(uint32_t id) const = 0;
virtual uint32_t maxSize() const { return static_cast<uint32_t>(max_serialized_size(0)); }
virtual uint32_t maxSizeNoMask() const {
return static_cast<uint32_t>(max_serialized_size_no_mask(0));
}
};
#endif