9 #ifndef NDN_ENCODING_FRAGMENTATION_SUPPORT_H 10 #define NDN_ENCODING_FRAGMENTATION_SUPPORT_H 12 #include "../ndn-constants.h" 13 #include "../ndn-error-code.h" 85 uint32_t fragment_max_size, uint16_t frag_identifier)
93 int rem = fragmenter->
original_size % (fragment_max_size - 3);
127 int size = (is_last)?
129 memcpy(&fragmented[3], &fragmenter->
original[fragmenter->
offset], size);
133 fragmenter->
offset += size;
194 int first_time = (assembler->
offset == 0)? 1 : 0;
197 if (seq != assembler->
seq)
204 uint16_t
id = ((uint16_t)frag[1] << 8) + (uint16_t)frag[2];
213 memcpy(&assembler->
original[assembler->
offset], &frag[3], fra_size - 3);
214 assembler->
offset += fra_size - 3;
229 #endif // NDN_ENCODING_FRAGMENTATION_SUPPORT_H uint16_t frag_identifier
The identifier of the fragments.
Definition: fragmentation-support.h:152
The structure to keep the state when assembling fragments.
Definition: fragmentation-support.h:140
uint32_t offset
The offset before which the original packet has been assembled.
Definition: fragmentation-support.h:156
struct ndn_frag_assembler ndn_frag_assembler_t
The structure to keep the state when assembling fragments.
uint32_t counter
The counter indicating how many frags have been generated.
Definition: fragmentation-support.h:69
#define NDN_FRAG_OUT_OF_ORDER
Definition: ndn-error-code.h:107
uint8_t * original
The buffer to keep the original packet.
Definition: fragmentation-support.h:144
struct ndn_fragmenter ndn_fragmenter_t
NDN-Lite reuses the ndn-riot fragmentation header (3 bytes header)
#define NDN_FRAG_NO_MORE_FRAGS
Definition: ndn-error-code.h:106
uint32_t total_frag_num
The total number of frags to be generated.
Definition: fragmentation-support.h:61
uint16_t frag_identifier
The identifier of the fragments.
Definition: fragmentation-support.h:57
static int ndn_fragmenter_fragment(ndn_fragmenter_t *fragmenter, uint8_t *fragmented)
Generate one fragmented packet.
Definition: fragmentation-support.h:108
NDN-Lite reuses the ndn-riot fragmentation header (3 bytes header)
Definition: fragmentation-support.h:40
uint8_t seq
Next sequence number of the fragment to be received.
Definition: fragmentation-support.h:160
static void ndn_frag_assembler_init(ndn_frag_assembler_t *assembler, uint8_t *original, uint32_t original_max_size)
Init an assembler.
Definition: fragmentation-support.h:174
uint32_t offset
The offset before which the original packet has been fragmented.
Definition: fragmentation-support.h:65
#define NDN_FRAG_MF_MASK
Definition: ndn-constants.h:54
#define NDN_FRAG_HB_MASK
Definition: ndn-constants.h:53
uint32_t original_size
The size of the original packet.
Definition: fragmentation-support.h:48
#define NDN_FRAG_SEQ_MASK
Definition: ndn-constants.h:55
uint8_t is_finished
A flag used to check whether the assembling is finished.
Definition: fragmentation-support.h:164
const uint8_t * original
The buffer to keep the original packet.
Definition: fragmentation-support.h:44
#define NDN_OVERSIZE
The object given is larger than expected.
Definition: ndn-error-code.h:33
static int ndn_frag_assembler_assemble_frag(ndn_frag_assembler_t *assembler, uint8_t *frag, uint32_t fra_size)
Assemble a fragment into the assembler.
Definition: fragmentation-support.h:192
#define NDN_FRAG_WRONG_IDENTIFIER
Definition: ndn-error-code.h:109
uint32_t original_max_size
The size of the buffer to keep the original packet.s.
Definition: fragmentation-support.h:148
#define NDN_FRAG_MAX_SEQ_NUM
Definition: ndn-constants.h:56
uint32_t fragment_max_size
The max size of each fragment.
Definition: fragmentation-support.h:53
static void ndn_fragmenter_init(ndn_fragmenter_t *fragmenter, const uint8_t *original, uint32_t original_size, uint32_t fragment_max_size, uint16_t frag_identifier)
Init a fragmenter.
Definition: fragmentation-support.h:84