34 #ifndef EMANEOTAMANAGER_HEADER_ 35 #define EMANEOTAMANAGER_HEADER_ 98 const std::string & sDevice,
111 typedef std::map<NEMId,OTAUser *> NEMUserMap;
113 NEMUserMap nemUserMap_;
124 mutable std::atomic<std::uint64_t> u64SequenceNumber_;
126 using PartKey = std::tuple<
NEMId,
129 using Parts = std::map<size_t,
130 std::vector<std::uint8_t>>;
132 using PartsData = std::tuple<size_t,
138 std::array<uint8_t,sizeof(uuid_t)>>;
140 using PartStore = std::map<PartKey,PartsData>;
141 PartStore partStore_;
142 TimePoint lastPartCheckTime_;
145 void processOTAMessage();
147 void handleOTAMessage(NEMId source,
149 const uuid_t & remoteUUID,
150 const TimePoint & now,
160 #endif //EMANEOTAMANAGER_HEADER_
void registerOTAUser(NEMId id, OTAUser *pOTAUser) override
void sendOTAPacket(NEMId id, const DownstreamPacket &pkt, const ControlMessages &msgs) const override
Ensure a class only has one instance, and provide a global point of access to it. ...
std::list< const ControlMessage * > ControlMessages
std::vector< iovec > VectorIO
std::chrono::seconds Seconds
Provides OTA access to all platform NEMs and handles intra and inter platform OTA message disseminati...
Specialized packet the allows downstream processing to add layer specific headers as the packet trave...
void unregisterOTAUser(NEMId id) override
void setStatEventCountRowLimit(size_t rows)
OTA user interface that allows access to the OTA provider.
Clock::time_point TimePoint
void setStatPacketCountRowLimit(size_t rows)
void open(const INETAddr &otaGroupAddress, const std::string &sDevice, bool bLoopback, int iTTL, const uuid_t &uuid, size_t otaMTU, Seconds partCheckThreshold, Seconds partTimeoutThreshold)