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 #include "../include/deserializer.hpp"
7 #include "../include/payload_impl.hpp"
8 #include "../include/serializer.hpp"
9 
10 namespace vsomeip_v3 {
11 
payload_impl()12 payload_impl::payload_impl()
13     : data_() {
14 }
15 
payload_impl(const byte_t * _data,uint32_t _size)16 payload_impl::payload_impl(const byte_t *_data, uint32_t _size) {
17     data_.assign(_data, _data + _size);
18 }
19 
payload_impl(const std::vector<byte_t> & _data)20 payload_impl::payload_impl(const std::vector<byte_t> &_data)
21     : data_(_data) {
22 }
23 
payload_impl(const payload_impl & _payload)24 payload_impl::payload_impl(const payload_impl& _payload)
25     : data_(_payload.data_) {
26 }
27 
~payload_impl()28 payload_impl::~payload_impl() {
29 }
30 
operator ==(const payload & _other)31 bool payload_impl::operator==(const payload &_other) {
32     bool is_equal(true);
33     try {
34         const payload_impl &other = dynamic_cast< const payload_impl & >(_other);
35         is_equal = (data_ == other.data_);
36     }
37     catch (...) {
38         is_equal = false;
39     }
40     return is_equal;
41 }
42 
get_data()43 byte_t * payload_impl::get_data() {
44     return data_.data();
45 }
46 
get_data() const47 const byte_t * payload_impl::get_data() const {
48     return data_.data();
49 }
50 
get_length() const51 length_t payload_impl::get_length() const {
52     return length_t(data_.size());
53 }
54 
set_capacity(length_t _capacity)55 void payload_impl::set_capacity(length_t _capacity) {
56     data_.reserve(_capacity);
57 }
58 
set_data(const byte_t * _data,const length_t _length)59 void payload_impl::set_data(const byte_t *_data, const length_t _length) {
60     data_.assign(_data, _data + _length);
61 }
62 
set_data(const std::vector<byte_t> & _data)63 void payload_impl::set_data(const std::vector< byte_t > &_data) {
64     data_ = _data;
65 }
66 
set_data(std::vector<byte_t> && _data)67 void payload_impl::set_data(std::vector< byte_t > &&_data) {
68     data_ = std::move(_data);
69 }
70 
serialize(serializer * _to) const71 bool payload_impl::serialize(serializer *_to) const {
72     return (0 != _to && _to->serialize(data_));
73 }
74 
deserialize(deserializer * _from)75 bool payload_impl::deserialize(deserializer *_from) {
76     return (0 != _from && _from->deserialize(data_));
77 }
78 
79 } // namespace vsomeip_v3
80