lock.h 748 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include "client.h"
  3. #include <yt/cpp/mapreduce/interface/client.h>
  4. namespace NYT {
  5. namespace NDetail {
  6. ////////////////////////////////////////////////////////////////////////////////
  7. class TLock
  8. : public ILock
  9. {
  10. public:
  11. TLock(const TLockId& lockId, TClientPtr client, bool waitable);
  12. virtual const TLockId& GetId() const override;
  13. virtual TNodeId GetLockedNodeId() const override;
  14. virtual const ::NThreading::TFuture<void>& GetAcquiredFuture() const override;
  15. private:
  16. const TLockId LockId_;
  17. mutable TMaybe<::NThreading::TFuture<void>> Acquired_;
  18. TClientPtr Client_;
  19. };
  20. ////////////////////////////////////////////////////////////////////////////////
  21. } // namespace NDetail
  22. } // namespace NYT