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