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)