17 #ifndef CONNECTMESSAGE_HPP_
18 #define CONNECTMESSAGE_HPP_
23 #include <botan/botan.h>
24 #include <arpa/inet.h>
31 template<
class T,
class U,
class V>
35 const V& payload) : message_(0)
44 std::copy(reinterpret_cast<const std::uint8_t *>(header),
45 reinterpret_cast<const std::uint8_t *>(header + size),
48 auto messageIt = message_.begin() + size;
51 std::copy(reinterpret_cast<std::uint8_t *>(&nameLengthNetworkOrder), reinterpret_cast<std::uint8_t *>(&nameLengthNetworkOrder) + 2, messageIt);
59 *(messageIt++) = 0x02;
63 std::uint16_t timerNetworkOrder = htons(timer);
64 std::copy(reinterpret_cast<std::uint8_t *>(&timerNetworkOrder), reinterpret_cast<std::uint8_t *>(&timerNetworkOrder) + 2, messageIt);
67 std::copy(sessionKey.begin(), sessionKey.end(), messageIt);
68 messageIt += sessionKey.size();
70 std::copy(signature.begin(), signature.end(), messageIt);
71 messageIt += signature.size();
73 std::copy(payload.begin(), payload.end(), messageIt);
77 const std::vector<std::uint8_t>&
getRawMessage()
const {
return message_; }
80 std::vector<std::uint8_t> message_;
static const std::uint8_t KAA_CONNECT_SESSION_KEY_FLAGS
static const std::uint8_t KAA_CONNECT_HEADER_LENGTH
const std::vector< std::uint8_t > & getRawMessage() const
static const std::uint8_t KAA_CONNECT_SIGNATURE_FLAGS
static const std::uint8_t PROTOCOL_VERSION
static const std::uint16_t KAA_TCP_NAME_LENGTH
ConnectMessage(std::uint16_t timer, const T &signature, const U &sessionKey, const V &payload)
static const char *const KAA_TCP_NAME
static std::uint8_t createBasicHeader(std::uint8_t messageType, std::uint32_t length, char *message)