#ifndef ASYNWAIT_H #define ASYNWAIT_H #include "uniqueid.h" #include #include #include #include #include using namespace std; using namespace std::chrono; class AsynWait { public: typedef function OnWaitTimeout; AsynWait(); void start(int precision=200); void stop(); public: void addWaitPack(IdType packetId, OnWaitTimeout onTimeout, int msTimeo); void clearWaitPack(IdType packetId); private: void run(); private: struct WaitPack{ IdType id; OnWaitTimeout handler; time_point timeo; }; list mWaitPacks; mutex mPacksMutex; bool mStarted=false; int mPrecision; thread mThd; }; #endif // ASYNWAIT_H