1 // Copyright (C) 2014-2017 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) 2 // This Source Code Form is subject to the terms of the Mozilla Public 3 // License, v. 2.0. If a copy of the MPL was not distributed with this 4 // file, You can obtain one at http://mozilla.org/MPL/2.0/. 5 6 #ifndef VSOMEIP_V3_PAYLOAD_IMPL_HPP 7 #define VSOMEIP_V3_PAYLOAD_IMPL_HPP 8 9 #include <vsomeip/export.hpp> 10 #include <vsomeip/payload.hpp> 11 12 namespace vsomeip_v3 { 13 14 class serializer; 15 class deserializer; 16 17 class payload_impl: public payload { 18 public: 19 VSOMEIP_EXPORT payload_impl(); 20 VSOMEIP_EXPORT payload_impl(const byte_t *_data, uint32_t _size); 21 VSOMEIP_EXPORT payload_impl(const std::vector< byte_t > &_data); 22 VSOMEIP_EXPORT payload_impl(const payload_impl& _payload); 23 VSOMEIP_EXPORT virtual ~payload_impl(); 24 25 VSOMEIP_EXPORT bool operator == (const payload &_other); 26 27 VSOMEIP_EXPORT byte_t * get_data(); 28 VSOMEIP_EXPORT const byte_t * get_data() const; 29 VSOMEIP_EXPORT length_t get_length() const; 30 31 VSOMEIP_EXPORT void set_capacity(length_t _capacity); 32 33 VSOMEIP_EXPORT void set_data(const byte_t *_data, length_t _length); 34 VSOMEIP_EXPORT void set_data(const std::vector< byte_t > &_data); 35 VSOMEIP_EXPORT void set_data(std::vector< byte_t > &&_data); 36 37 VSOMEIP_EXPORT bool serialize(serializer *_to) const; 38 VSOMEIP_EXPORT bool deserialize(deserializer *_from); 39 40 private: 41 std::vector<byte_t> data_; 42 }; 43 44 } // namespace vsomeip_v3 45 46 #endif // VSOMEIP_V3_PAYLOAD_IMPL_HPP 47