34 #ifndef EMANEMODELSTDMARECEIVEMANAGER_HEADER_ 35 #define EMANEMODELSTDMARECEIVEMANAGER_HEADER_ 86 void loadCurves(
const std::string & sPCRFileName);
95 std::uint64_t u64PacketSequence);
97 void process(std::uint64_t u64AbsoluteSlotIndex);
116 PendingInfo pendingInfo_;
117 std::uint64_t u64PendingAbsoluteSlotIndex_;
120 std::uniform_real_distribution<float>> distribution_;
122 bool bPromiscuousMode_;
123 std::chrono::seconds fragmentCheckThreshold_;
124 std::chrono::seconds fragmentTimeoutThreshold_;
126 using FragmentKey = std::tuple<NEMId,Priority,std::uint64_t>;
127 using FragmentParts = std::map<size_t,std::vector<std::uint8_t>>;
128 using FragmentInfo = std::tuple<std::set<size_t>,
134 using FragmentStore = std::map<FragmentKey,FragmentInfo>;
136 FragmentStore fragmentStore_;
137 TimePoint lastFragmentCheckTime_;
147 #endif // EMANEMODELSTDMARECEIVEMANAGER_HEADER_
void process(std::uint64_t u64AbsoluteSlotIndex)
Message class used to serialize and deserialize TDMA radio model messages.
POR Manager responsible for loading PCR curves from file and determining POR.
void setPromiscuousMode(bool bEnable)
Store source, destination, creation time and priority information for a packet.
Log service provider interface.
void setFragmentTimeoutThreshold(const std::chrono::seconds &threshold)
ReceiveManager(NEMId id, DownstreamTransport *pDownstreamTransport, LogServiceProvider *pLogService, RadioServiceProvider *pRadioService, Scheduler *pScheduler, PacketStatusPublisher *pPacketStatusPublisher, NeighborMetricManager *pNeighborMetricManager)
std::chrono::microseconds Microseconds
void loadCurves(const std::string &sPCRFileName)
The RadioServiceProvider interface provides access to radio (RF) model specific services.
Scheduler interface used by BaseModel to communicate with a scheduler module.
void setFragmentCheckThreshold(const std::chrono::seconds &threshold)
std::list< FrequencySegment > FrequencySegments
Manages all receive side message processing.
Packet status interface used to publish statistics and tables showing accepted and rejected byte coun...
Clock::time_point TimePoint
DownstreamTransport allows for processing downstream data and control messages.
bool enqueue(BaseModelMessage &&baseModelMessage, const PacketInfo &pktInfo, size_t length, const TimePoint &startOfReception, const FrequencySegments &frequencySegments, const Microseconds &span, const TimePoint &beginTime, std::uint64_t u64PacketSequence)
A utility wrapper around a generator and a distribution.
Manages neighbor metrics and sends neighbor metric control message upstream.