aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Disks/ObjectStorages/DiskObjectStorageCache.cpp
blob: 9e5012dec54c60911b45583dbed3970ad155cf06 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <Disks/ObjectStorages/Cached/CachedObjectStorage.h>

#include <Disks/ObjectStorages/DiskObjectStorage.h>

#include <Common/assert_cast.h>

namespace DB
{

void DiskObjectStorage::wrapWithCache(FileCachePtr cache, const FileCacheSettings & cache_settings, const String & layer_name)
{
    object_storage = std::make_shared<CachedObjectStorage>(object_storage, cache, cache_settings, layer_name);
}

NameSet DiskObjectStorage::getCacheLayersNames() const
{
    NameSet cache_layers;
    auto current_object_storage = object_storage;
    while (current_object_storage->supportsCache())
    {
        auto * cached_object_storage = assert_cast<CachedObjectStorage *>(current_object_storage.get());
        cache_layers.insert(cached_object_storage->getCacheConfigName());
        current_object_storage = cached_object_storage->getWrappedObjectStorage();
    }
    return cache_layers;
}

}