#ifndef LLARP_PROFILING_HPP #define LLARP_PROFILING_HPP #include #include #include #include namespace llarp { struct RouterProfile : public IBEncodeMessage { static constexpr size_t MaxSize = 128; uint64_t connectTimeoutCount = 0; uint64_t connectGoodCount = 0; RouterProfile() : IBEncodeMessage(){}; ~RouterProfile(){}; bool BEncode(llarp_buffer_t* buf) const; bool DecodeKey(llarp_buffer_t k, llarp_buffer_t* buf); bool IsGood() const; }; struct Profiling : public IBEncodeMessage { Profiling() : IBEncodeMessage(){}; ~Profiling() { } bool IsBad(const RouterID& r); void MarkSuccess(const RouterID& r); void MarkTimeout(const RouterID& r); bool BEncode(llarp_buffer_t* buf) const; bool DecodeKey(llarp_buffer_t k, llarp_buffer_t* buf); bool Load(const char* fname); bool Save(const char* fname); private: typedef llarp::util::Lock lock_t; typedef llarp::util::Mutex mtx_t; mtx_t m_ProfilesMutex; std::map< RouterID, RouterProfile > m_Profiles; }; } // namespace llarp #endif