6 #ifndef PS_DATACONTAINER_H
7 #define PS_DATACONTAINER_H
16 namespace parameter_server {
19 size_t src_byte_offset;
20 size_t src_el_byte_size;
23 size_t dst_byte_offset;
24 size_t dst_el_byte_size;
34 std::function<void(uint8_t*,
const uint8_t*,
size_t size,
const ConversionData& conversion_data)>;
37 CoversionClb copy_clb;
53 DataContainer(Type type,
const void* data_ptr,
size_t offset_bytes,
size_t length_bytes);
57 bool allocate(Type type,
size_t length_bytes);
64 log_assert((orig.getSize() + orig.getOffset()) <= getMaxSize(),
"Source offset: {}, length: {} > length: {}",
65 orig.getOffset(), orig.getSize(), getMaxSize()) app_time_ = orig.
app_time_;
71 offset_bytes_.offset = 0;
72 offset_bytes_.size = orig.getOffset() + orig.getSize();
73 memcpy(data_.ui_ptr, orig.getData(), offset_bytes_.size);
75 case Type::OUTPUT_BUFFER:
77 if (orig.getType() == Type::PARAMETER_VARIABLE) {
78 offset_bytes_.offset = 0;
79 offset_bytes_.size = orig.getOffset() + orig.getSize();
81 offset_bytes_.offset = 0;
82 offset_bytes_.size = orig.getMaxSize();
84 memcpy(data_.ui_ptr, orig.getData(), offset_bytes_.size);
86 case Type::INPUT_BUFFER:
88 offset_bytes_.offset = orig.getOffset();
89 offset_bytes_.size = orig.getSize();
90 memcpy(data_.ui_ptr, orig.getData(), offset_bytes_.size);
92 case Type::PARAMETER_VARIABLE:
93 offset_bytes_.offset = 0;
94 offset_bytes_.size = orig.getOffset() + orig.getSize();
95 case Type::PARAMETER_FIXED:
97 memcpy(data_.ui_ptr + orig.getOffset(), orig.getData(), orig.getSize());
104 void setDataPtr(Type type,
const void* data_ptr,
size_t offset_bytes,
size_t length_bytes);
108 inline size_t getMaxSize()
const {
return offset_bytes_.max_size; }
110 inline size_t getSize()
const {
return offset_bytes_.size; }
112 inline size_t getOffset()
const {
return offset_bytes_.offset; }
114 inline const uint8_t* getData()
const {
return data_.ui_ptr; }
116 inline Type getType()
const {
return type_; }
118 void setSize(
size_t size) {
119 if (size < offset_bytes_.max_size) {
120 offset_bytes_.size = size;
122 offset_bytes_.size = offset_bytes_.max_size;
126 inline void setTime(
const struct timespec& app_time) { app_time_ = app_time; }
128 const struct timespec& getTime()
const {
return app_time_; }
131 Type type_{Type::NONE};
146 struct timespec app_time_ {};