host_manager.h 746 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include "fwd.h"
  3. #include <util/generic/string.h>
  4. #include <util/generic/hash.h>
  5. #include <util/system/spinlock.h>
  6. namespace NYT::NPrivate {
  7. ////////////////////////////////////////////////////////////////////////////////
  8. class THostManager
  9. {
  10. public:
  11. static THostManager& Get();
  12. TString GetProxyForHeavyRequest(const TClientContext& context);
  13. // For testing purposes only.
  14. void Reset();
  15. private:
  16. class TClusterHostList;
  17. private:
  18. TAdaptiveLock Lock_;
  19. THashMap<TString, TClusterHostList> ClusterHosts_;
  20. private:
  21. static TClusterHostList GetHosts(const TClientContext& context);
  22. };
  23. ////////////////////////////////////////////////////////////////////////////////
  24. } // namespace NYT::NPrivate