summaryrefslogtreecommitdiff
path: root/implementation/protocol/include/command.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'implementation/protocol/include/command.hpp')
-rw-r--r--implementation/protocol/include/command.hpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/implementation/protocol/include/command.hpp b/implementation/protocol/include/command.hpp
new file mode 100644
index 0000000..a39990a
--- /dev/null
+++ b/implementation/protocol/include/command.hpp
@@ -0,0 +1,46 @@
+// Copyright (C) 2021 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifndef VSOMEIP_V3_PROTOCOL_COMMAND_HPP_
+#define VSOMEIP_V3_PROTOCOL_COMMAND_HPP_
+
+#include <cstring> // memcpy
+#include <vector>
+
+#include <vsomeip/primitive_types.hpp>
+
+#include "protocol.hpp"
+
+namespace vsomeip_v3 {
+namespace protocol {
+
+using commandize_t = std::uint32_t;
+
+class command {
+public:
+ inline id_e get_id() const { return id_; }
+ inline version_t get_version() const { return version_; }
+ inline client_t get_client() const { return client_; }
+ inline void set_client(client_t _client) { client_ = _client; }
+ inline command_size_t get_size() const { return size_; }
+
+ virtual void serialize(std::vector<byte_t> &_buffer,
+ error_e &_error) const;
+ virtual void deserialize(const std::vector<byte_t> &_buffer,
+ error_e &_error);
+
+protected:
+ id_e id_;
+ version_t version_;
+ client_t client_;
+ mutable command_size_t size_;
+
+ command(id_e _id);
+};
+
+} // namespace protocol
+} // namespace vsomeip_v3
+
+#endif // VSOMEIP_V3_PROTOCOL_COMMAND_HPP_