MCPcopy Create free account
hub / github.com/COVESA/vsomeip / deserialize

Method deserialize

implementation/protocol/src/multiple_services_command_base.cpp:44–76  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42}
43
44void multiple_services_command_base::deserialize(const std::vector<byte_t>& _buffer, error_e& _error) {
45
46 if (COMMAND_HEADER_SIZE > _buffer.size()) {
47
48 _error = error_e::ERROR_NOT_ENOUGH_BYTES;
49 return;
50 }
51
52 // deserialize header
53 command::deserialize(_buffer, _error);
54 if (_error != error_e::ERROR_OK)
55 return;
56
57 // deserialize payload
58 size_t its_offset(COMMAND_POSITION_PAYLOAD);
59 size_t its_count = (_buffer.size() - its_offset)
60 / (sizeof(service::service_) + sizeof(service::instance_) + sizeof(service::major_) + sizeof(service::minor_));
61
62 for (size_t i = 0; i < its_count; i++) {
63 service its_service;
64
65 std::memcpy(&its_service.service_, &_buffer[its_offset], sizeof(its_service.service_));
66 its_offset += sizeof(its_service.service_);
67 std::memcpy(&its_service.instance_, &_buffer[its_offset], sizeof(its_service.instance_));
68 its_offset += sizeof(its_service.instance_);
69 std::memcpy(&its_service.major_, &_buffer[its_offset], sizeof(its_service.major_));
70 its_offset += sizeof(its_service.major_);
71 std::memcpy(&its_service.minor_, &_buffer[its_offset], sizeof(its_service.minor_));
72 its_offset += sizeof(its_service.minor_);
73
74 services_.insert(its_service);
75 }
76}
77
78std::set<service> multiple_services_command_base::get_services() const {
79

Callers

nothing calls this directly

Calls 3

deserializeFunction · 0.85
insertMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected