@@ -28,6 +28,7 @@ namespace firebase {
2828namespace firestore {
2929
3030using CoreCacheSettings = api::LocalCacheSettings;
31+ using CoreMemoryGarbageCollectorSettings = api::MemoryGargabeCollectorSettings;
3132
3233class PersistentCacheSettingsInternal ;
3334class MemoryCacheSettingsInternal ;
@@ -57,7 +58,6 @@ class PersistentCacheSettings final : public LocalCacheSettings {
5758 friend class Settings ;
5859
5960 PersistentCacheSettings ();
60- PersistentCacheSettings (const PersistentCacheSettingsInternal& other);
6161
6262 api::LocalCacheSettings::Kind kind () const override {
6363 return api::LocalCacheSettings::Kind::kPersistent ;
@@ -68,57 +68,73 @@ class PersistentCacheSettings final : public LocalCacheSettings {
6868 std::unique_ptr<PersistentCacheSettingsInternal> settings_internal_;
6969};
7070
71+ class MemoryGarbageCollectorSettings ;
72+
73+ class MemoryCacheSettings final : public LocalCacheSettings {
74+ public:
75+ static MemoryCacheSettings Create ();
76+ MemoryCacheSettings (const MemoryCacheSettings& other);
77+ ~MemoryCacheSettings ();
78+
79+ MemoryCacheSettings WithGarbageCollectorSettings (
80+ const MemoryGarbageCollectorSettings& settings) const ;
81+
82+ private:
83+ friend class Settings ;
84+
85+ MemoryCacheSettings ();
86+
87+ api::LocalCacheSettings::Kind kind () const override {
88+ return api::LocalCacheSettings::Kind::kMemory ;
89+ }
90+
91+ const CoreCacheSettings& core_cache_settings () const override ;
92+
93+ std::unique_ptr<MemoryCacheSettingsInternal> settings_internal_;
94+ };
95+
7196class MemoryGarbageCollectorSettings {
7297 public:
7398 virtual ~MemoryGarbageCollectorSettings () = default ;
7499
75100 private:
101+ friend class MemoryCacheSettings ;
102+ virtual const CoreMemoryGarbageCollectorSettings& core_gc_settings ()
103+ const = 0;
76104};
77105
78- class MemoryEagerGCSettings final : MemoryGarbageCollectorSettings {
106+ class MemoryEagerGCSettings final : public MemoryGarbageCollectorSettings {
107+ public:
79108 static MemoryEagerGCSettings Create ();
80109 ~MemoryEagerGCSettings ();
81110
82111 private:
112+ friend class MemoryCacheSettings ;
83113 MemoryEagerGCSettings ();
84114
115+ const CoreMemoryGarbageCollectorSettings& core_gc_settings () const override {
116+ return settings_internal_->core_settings ();
117+ }
118+
85119 std::unique_ptr<MemoryEagerGCSettingsInternal> settings_internal_;
86120};
87121
88- class MemoryLruGCSettings final : MemoryGarbageCollectorSettings {
122+ class MemoryLruGCSettings final : public MemoryGarbageCollectorSettings {
123+ public:
89124 static MemoryLruGCSettings Create ();
90125 ~MemoryLruGCSettings ();
91126 MemoryLruGCSettings WithSizeBytes (int64_t size);
92127
93128 private:
129+ friend class MemoryCacheSettings ;
94130 MemoryLruGCSettings ();
95131 MemoryLruGCSettings (const MemoryLruGCSettingsInternal& other);
96132
97- std::unique_ptr<MemoryLruGCSettingsInternal> settings_internal_;
98- };
99-
100- class MemoryCacheSettings final : public LocalCacheSettings {
101- public:
102- static MemoryCacheSettings Create ();
103- MemoryCacheSettings (const MemoryCacheSettings& other);
104- ~MemoryCacheSettings ();
105-
106- MemoryCacheSettings WithGarbageCollectorSettings (
107- const MemoryGarbageCollectorSettings& settings);
108-
109- private:
110- friend class Settings ;
111-
112- MemoryCacheSettings ();
113- MemoryCacheSettings (const MemoryCacheSettingsInternal& other);
114-
115- api::LocalCacheSettings::Kind kind () const override {
116- return api::LocalCacheSettings::Kind::kMemory ;
133+ const CoreMemoryGarbageCollectorSettings& core_gc_settings () const override {
134+ return settings_internal_->core_settings ();
117135 }
118136
119- const CoreCacheSettings& core_cache_settings () const override ;
120-
121- std::unique_ptr<MemoryCacheSettingsInternal> settings_internal_;
137+ std::unique_ptr<MemoryLruGCSettingsInternal> settings_internal_;
122138};
123139
124140} // namespace firestore
0 commit comments