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 <vsomeip/defines.hpp>
7 
8 #include "../include/message_base_impl.hpp"
9 #include "../include/message_header_impl.hpp"
10 #include "../include/serializer.hpp"
11 #include "../include/deserializer.hpp"
12 
13 namespace vsomeip_v3 {
14 
message_header_impl()15 message_header_impl::message_header_impl()
16     : service_(0x0), method_(0x0), length_(0x0),
17       client_(0x0), session_(0x0),
18       protocol_version_(0x1), interface_version_(0x0),
19       type_(message_type_e::MT_UNKNOWN),
20       code_(return_code_e::E_UNKNOWN),
21       instance_(0x0), owner_(0x0) {
22 }
23 
message_header_impl(const message_header_impl & _header)24 message_header_impl::message_header_impl(const message_header_impl &_header)
25     : service_(_header.service_), method_(_header.method_),
26       length_(_header.length_),
27       client_(_header.client_), session_(_header.session_),
28       protocol_version_(_header.protocol_version_),
29       interface_version_(_header.interface_version_),
30       type_(_header.type_),
31       code_(_header.code_),
32       instance_(_header.instance_), owner_(_header.owner_) {
33 }
34 
serialize(serializer * _to) const35 bool message_header_impl::serialize(serializer *_to) const {
36     return (0 != _to
37             && _to->serialize(service_)
38             && _to->serialize(method_)
39             && _to->serialize(owner_->get_length())
40             && _to->serialize(client_)
41             && _to->serialize(session_)
42             && _to->serialize(protocol_version_)
43             && _to->serialize(interface_version_)
44             && _to->serialize(static_cast<uint8_t>(type_))
45             && _to->serialize(static_cast<uint8_t>(code_)));
46 }
47 
deserialize(deserializer * _from)48 bool message_header_impl::deserialize(deserializer *_from) {
49     bool is_successful;
50 
51     uint8_t tmp_message_type, tmp_return_code;
52 
53     is_successful = (0 != _from
54             && _from->deserialize(service_)
55             && _from->deserialize(method_)
56             && _from->deserialize(length_)
57             && _from->deserialize(client_)
58             && _from->deserialize(session_)
59             && _from->deserialize(protocol_version_)
60             && _from->deserialize(interface_version_)
61             && _from->deserialize(tmp_message_type)
62             && _from->deserialize(tmp_return_code));
63 
64     if (is_successful) {
65         type_ = static_cast< message_type_e >(tmp_message_type);
66         code_ = static_cast< return_code_e >(tmp_return_code);
67     }
68 
69     return is_successful;
70 }
71 
get_owner() const72 message_base * message_header_impl::get_owner() const {
73     return owner_;
74 }
75 
set_owner(message_base * _owner)76 void message_header_impl::set_owner(message_base *_owner) {
77     owner_ = _owner;
78 }
79 
80 } // namespace vsomeip_v3
81