yql_files_box.h 583 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #include <yql/essentials/utils/rand_guid.h>
  3. #include <util/generic/hash.h>
  4. #include <util/folder/path.h>
  5. namespace NYql {
  6. namespace NCommon {
  7. /*
  8. Resembles sandbox for external UDFs
  9. */
  10. class TFilesBox {
  11. public:
  12. TFilesBox(TFsPath dir, TRandGuid randGuid);
  13. ~TFilesBox();
  14. TString MakeLinkFrom(const TString& source, const TString& filename = {});
  15. TString GetDir() const;
  16. void Destroy();
  17. private:
  18. TFsPath Dir;
  19. TRandGuid RandGuid;
  20. THashMap<TString, TString> Mapping;
  21. };
  22. THolder<TFilesBox> CreateFilesBox(const TFsPath& baseDir);
  23. }
  24. }