1 #ifndef _MADARA_FRAGMENTATION_HEADER_H_
2 #define _MADARA_FRAGMENTATION_HEADER_H_
18 #include "madara/MadaraExport.h"
25 #define FRAGMENTATION_MADARA_ID "KFRG1.4"
68 virtual uint32_t encoded_size(
void)
const override;
75 static uint32_t static_encoded_size(
void);
81 static uint32_t get_updates(
const char* buffer);
91 virtual const char* read(
92 const char* buffer, int64_t& buffer_remaining)
override;
107 virtual char* write(
char* buffer, int64_t& buffer_remaining)
override;
138 typedef std::map<uint32_t, utility::ScopedArray<const char>>
FragmentMap;
165 MADARA_EXPORT
char*
add_fragment(
const char* originator, uint64_t clock,
166 uint32_t update_number,
const char* fragment, uint32_t queue_length,
197 MADARA_EXPORT
void frag(
198 const char* source, uint64_t total_size,
199 const char* originator,
const char* domain,
202 uint32_t quality,
unsigned char ttl,
223 MADARA_EXPORT
bool exists(
const char* originator, uint64_t clock,
#define FRAGMENTATION_MADARA_ID
std::map< uint32_t, utility::ScopedArray< const char > > FragmentMap
Map of fragment identifiers to fragments.
MADARA_EXPORT char * add_fragment(const char *originator, uint64_t clock, uint32_t update_number, const char *fragment, uint32_t queue_length, OriginatorFragmentMap &map, uint64_t &total_size, bool clear=true)
Adds a fragment to an originator fragment map and returns the aggregate message if the message is com...
MADARA_EXPORT bool is_complete(const char *originator, uint64_t clock, OriginatorFragmentMap &map)
Breaks a large packet into smaller packets.
std::map< std::string, ClockFragmentMap > OriginatorFragmentMap
Map of originator to a map of clocks to fragments.
std::map< uint64_t, FragmentMap > ClockFragmentMap
Map of clocks to fragments.
MADARA_EXPORT void frag(const char *source, uint64_t total_size, const char *originator, const char *domain, uint64_t clock, uint64_t timestamp, uint32_t quality, unsigned char ttl, uint64_t fragment_size, FragmentMap &map)
Breaks a large packet into smaller packets.
MADARA_EXPORT bool exists(const char *originator, uint64_t clock, uint32_t update_number, OriginatorFragmentMap &map)
Checks if a fragment already exists within a fragment map.
MADARA_EXPORT char * defrag(FragmentMap &map, uint64_t &total_size)
Pieces together a fragment map into a single buffer.
MADARA_EXPORT void delete_fragments(FragmentMap &map)
Deletes fragments within a fragment map and clears the map.
Copyright(c) 2020 Galois.