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_ {};