storage_facade.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include <rpl/producer.h>
  9. #include "base/enum_mask.h"
  10. namespace Data {
  11. struct MessagesResult;
  12. } // namespace Data
  13. namespace Storage {
  14. struct SparseIdsListResult;
  15. struct SharedMediaAddNew;
  16. struct SharedMediaAddExisting;
  17. struct SharedMediaAddSlice;
  18. struct SharedMediaRemoveOne;
  19. struct SharedMediaRemoveAll;
  20. struct SharedMediaInvalidateBottom;
  21. struct SharedMediaUnloadThread;
  22. struct SharedMediaQuery;
  23. struct SharedMediaKey;
  24. using SharedMediaResult = SparseIdsListResult;
  25. struct SharedMediaSliceUpdate;
  26. struct UserPhotosSetBack;
  27. struct UserPhotosAddNew;
  28. struct UserPhotosAddSlice;
  29. struct UserPhotosRemoveOne;
  30. struct UserPhotosRemoveAfter;
  31. struct UserPhotosQuery;
  32. struct UserPhotosResult;
  33. struct UserPhotosSliceUpdate;
  34. class Facade {
  35. public:
  36. Facade();
  37. void add(SharedMediaAddNew &&query);
  38. void add(SharedMediaAddExisting &&query);
  39. void add(SharedMediaAddSlice &&query);
  40. void remove(SharedMediaRemoveOne &&query);
  41. void remove(SharedMediaRemoveAll &&query);
  42. void invalidate(SharedMediaInvalidateBottom &&query);
  43. void unload(SharedMediaUnloadThread &&query);
  44. rpl::producer<SharedMediaResult> query(SharedMediaQuery &&query) const;
  45. SharedMediaResult snapshot(const SharedMediaQuery &query) const;
  46. bool empty(const SharedMediaKey &key) const;
  47. rpl::producer<SharedMediaSliceUpdate> sharedMediaSliceUpdated() const;
  48. rpl::producer<SharedMediaRemoveOne> sharedMediaOneRemoved() const;
  49. rpl::producer<SharedMediaRemoveAll> sharedMediaAllRemoved() const;
  50. rpl::producer<SharedMediaInvalidateBottom> sharedMediaBottomInvalidated() const;
  51. void add(UserPhotosSetBack &&query);
  52. void add(UserPhotosAddNew &&query);
  53. void add(UserPhotosAddSlice &&query);
  54. void remove(UserPhotosRemoveOne &&query);
  55. void remove(UserPhotosRemoveAfter &&query);
  56. rpl::producer<UserPhotosResult> query(UserPhotosQuery &&query) const;
  57. rpl::producer<UserPhotosSliceUpdate> userPhotosSliceUpdated() const;
  58. ~Facade();
  59. private:
  60. class Impl;
  61. const std::unique_ptr<Impl> _impl;
  62. };
  63. } // namespace Storage