user_files.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <ydb/library/yql/providers/yt/lib/url_mapper/yql_yt_url_mapper.h>
  3. #include <ydb/library/yql/core/file_storage/storage.h>
  4. #include <ydb/library/yql/core/type_ann/type_ann_core.h>
  5. #include <ydb/library/yql/core/yql_user_data.h>
  6. #include <util/system/mutex.h>
  7. #include <util/generic/ptr.h>
  8. #include <util/generic/hash.h>
  9. #include <util/generic/string.h>
  10. class IThreadPool;
  11. namespace NYql {
  12. class TYtGatewayConfig;
  13. class TUserFiles: public TThrRefBase {
  14. public:
  15. using TPtr = TIntrusivePtr<TUserFiles>;
  16. struct TFileInfo {
  17. TFileLinkPtr Path; // Real path in storage
  18. bool IsUdf = false;
  19. ui64 InMemorySize = 0;
  20. TString RemotePath;
  21. double RemoteMemoryFactor = 0.;
  22. bool BypassArtifactCache = false;
  23. };
  24. public:
  25. TUserFiles(const TYtUrlMapper& urlMapper, const TString& activeCluster);
  26. void AddFile(const TUserDataKey& key, const TUserDataBlock& block);
  27. bool HasFilePath(const TString& name) const;
  28. bool FindFolder(const TString& name, TVector<TString>& files) const;
  29. TString GetFilePath(const TString& name) const;
  30. const TFileInfo* GetFile(const TString& name) const;
  31. THashMap<TString, TFileInfo> GetFiles() const;
  32. bool IsEmpty() const;
  33. private:
  34. const TYtUrlMapper& UrlMapper;
  35. const TString ActiveCluster;
  36. THashMap<TString, TFileInfo> Files;
  37. TMutex Mutex;
  38. };
  39. } // NYql