33 #ifndef EMANEMODELSTDMARECEIVEMANAGER_HEADER_ 34 #define EMANEMODELSTDMARECEIVEMANAGER_HEADER_ 85 void loadCurves(
const std::string & sPCRFileName);
94 std::uint64_t u64PacketSequence);
96 void process(std::uint64_t u64AbsoluteSlotIndex);
115 PendingInfo pendingInfo_;
116 std::uint64_t u64PendingAbsoluteSlotIndex_;
119 std::uniform_real_distribution<float>> distribution_;
121 bool bPromiscuousMode_;
122 std::chrono::seconds fragmentCheckThreshold_;
123 std::chrono::seconds fragmentTimeoutThreshold_;
125 using FragmentKey = std::tuple<NEMId,Priority,std::uint64_t>;
126 using FragmentParts = std::map<size_t,std::vector<std::uint8_t>>;
127 using FragmentInfo = std::tuple<std::set<size_t>,
132 using FragmentStore = std::map<FragmentKey,FragmentInfo>;
133 using FragmentTimeStore = std::map<TimePoint,FragmentKey>;
135 FragmentStore fragmentStore_;
136 FragmentTimeStore fragmentTimeStore_;
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.