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 #include <vsomeip/payload.hpp> 8 #include <vsomeip/runtime.hpp> 9 10 #include "../include/message_impl.hpp" 11 #ifdef ANDROID 12 #include "../../configuration/include/internal_android.hpp" 13 #else 14 #include "../../configuration/include/internal.hpp" 15 #endif 16 #include "../../utility/include/byteorder.hpp" 17 18 namespace vsomeip_v3 { 19 message_impl()20message_impl::message_impl() 21 : payload_(runtime::get()->create_payload()), 22 check_result_(0), uid_(ANY_UID), gid_(ANY_GID) { 23 } 24 ~message_impl()25message_impl::~message_impl() { 26 } 27 get_length() const28length_t message_impl::get_length() const { 29 return (VSOMEIP_SOMEIP_HEADER_SIZE 30 + (payload_ ? payload_->get_length() : 0)); 31 } 32 get_payload() const33std::shared_ptr< payload > message_impl::get_payload() const { 34 return payload_; 35 } 36 set_payload(std::shared_ptr<payload> _payload)37void message_impl::set_payload(std::shared_ptr< payload > _payload) { 38 payload_ = _payload; 39 } 40 serialize(serializer * _to) const41bool message_impl::serialize(serializer *_to) const { 42 return (header_.serialize(_to) 43 && (payload_ ? payload_->serialize(_to) : true)); 44 } 45 deserialize(deserializer * _from)46bool message_impl::deserialize(deserializer *_from) { 47 payload_ = runtime::get()->create_payload(); 48 bool is_successful = header_.deserialize(_from); 49 if (is_successful) { 50 payload_->set_capacity(header_.length_ - VSOMEIP_SOMEIP_HEADER_SIZE); 51 is_successful = payload_->deserialize(_from); 52 } 53 return is_successful; 54 } 55 get_check_result() const56uint8_t message_impl::get_check_result() const { 57 return check_result_; 58 } 59 set_check_result(uint8_t _check_result)60void message_impl::set_check_result(uint8_t _check_result) { 61 check_result_ = _check_result; 62 } 63 is_valid_crc() const64bool message_impl::is_valid_crc() const { 65 return (check_result_ == 0); 66 } 67 get_uid() const68uid_t message_impl::get_uid() const { 69 return uid_; 70 } 71 set_uid(uid_t _uid)72void message_impl::set_uid(uid_t _uid) { 73 uid_ = _uid; 74 } 75 get_gid() const76uid_t message_impl::get_gid() const { 77 return gid_; 78 } 79 set_gid(gid_t _gid)80void message_impl::set_gid(gid_t _gid) { 81 gid_ = _gid; 82 } 83 84 } // namespace vsomeip_v3 85