Finder.h 924 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef VSTARCAM_FINDER_H
  2. #define VSTARCAM_FINDER_H
  3. #include <asio.hpp>
  4. #include <condition_variable>
  5. #include <mutex>
  6. #include <string>
  7. #include <thread>
  8. namespace VStarCam {
  9. class Finder
  10. {
  11. public:
  12. explicit Finder(const std::string& ipAddress);
  13. ~Finder();
  14. int GetPort(const std::string& ipAddress);
  15. private:
  16. bool Timeout() const;
  17. bool PortFound();
  18. void ProcessMessage(const std::string& message);
  19. std::string GetString(std::string::const_iterator& it) const;
  20. void Advance(std::string::const_iterator& it) const;
  21. std::string StringToHex(const std::string& input) const;
  22. private:
  23. asio::system_timer::time_point m_startTime;
  24. asio::system_timer::duration m_timeout;
  25. mutable std::mutex m_mutex;
  26. std::condition_variable m_condition;
  27. std::string m_sourceAddress;
  28. std::string m_targetAddress;
  29. int m_sourcePort;
  30. int m_targetPort;
  31. int m_port;
  32. };
  33. } // namespace VStarCam
  34. #endif // UTIL_VSTARCAMFINDER_H