nfd::face::LpReassembler Class Reference

reassembles fragmented network-layer packets More...

#include <daemon/face/lp-reassembler.hpp>

+ Inheritance diagram for nfd::face::LpReassembler:
+ Collaboration diagram for nfd::face::LpReassembler:

Classes

class  Options
 Options that control the behavior of LpReassembler. More...
 

Public Member Functions

 LpReassembler (const Options &options=Options(), const LinkService *linkService=nullptr)
 
const LinkServicegetLinkService () const
 
std::tuple< bool, Block, lp::Packet > receiveFragment (Transport::EndpointId remoteEndpoint, const lp::Packet &packet)
 adds received fragment to buffer More...
 
void setOptions (const Options &options)
 set options for reassembler More...
 
size_t size () const
 count of partial packets More...
 

Public Attributes

signal::Signal< LpReassembler, Transport::EndpointId, size_t > beforeTimeout
 signals before a partial packet is dropped due to timeout More...
 

Detailed Description

reassembles fragmented network-layer packets

See also
http://redmine.named-data.net/projects/nfd/wiki/NDNLPv2

Definition at line 43 of file lp-reassembler.hpp.

Constructor & Destructor Documentation

nfd::face::LpReassembler::LpReassembler ( const Options options = Options(),
const LinkService linkService = nullptr 
)
explicit

Definition at line 41 of file lp-reassembler.cpp.

Member Function Documentation

const LinkService * nfd::face::LpReassembler::getLinkService ( ) const
inline
Returns
LinkService that owns this instance

This is only used for logging, and may be nullptr.

Definition at line 146 of file lp-reassembler.hpp.

std::tuple< bool, Block, lp::Packet > nfd::face::LpReassembler::receiveFragment ( Transport::EndpointId  remoteEndpoint,
const lp::Packet &  packet 
)

adds received fragment to buffer

Parameters
remoteEndpointendpoint whose sends the packet
packetreceived fragment; must have Fragment field
Returns
whether network-layer packet has been completely received, the reassembled network-layer packet, and the first fragment for inspecting other NDNLPv2 headers
Exceptions
tlv::Errorpacket is malformed

Definition at line 48 of file lp-reassembler.cpp.

void nfd::face::LpReassembler::setOptions ( const Options options)
inline

set options for reassembler

Definition at line 140 of file lp-reassembler.hpp.

size_t nfd::face::LpReassembler::size ( ) const
inline

count of partial packets

Definition at line 152 of file lp-reassembler.hpp.

Member Data Documentation

signal::Signal<LpReassembler, Transport::EndpointId, size_t> nfd::face::LpReassembler::beforeTimeout

signals before a partial packet is dropped due to timeout

If a partial packet is incomplete and no new fragment is received within Options::reassemblyTimeout, it would be dropped due to timeout. Before it's erased, this signal is emitted with the remote endpoint, and the number of fragments being dropped.

Definition at line 104 of file lp-reassembler.hpp.