Finder.h 906 B

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