sapling/eden/fs/store/BlobAccess.cpp
Chad Austin b653d9cc86 fix gcc compilation issues
Summary: Fix some RVO warnings and a compilation error when compiling with gcc.

Reviewed By: xavierd

Differential Revision: D21481738

fbshipit-source-id: 0621f5886df40c24ef1a6a68ccd957e38f2f4122
2020-05-20 15:49:02 -07:00

44 lines
1.3 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#include "eden/fs/store/BlobAccess.h"
#include <folly/MapUtil.h>
#include "eden/fs/model/Blob.h"
#include "eden/fs/store/BlobCache.h"
#include "eden/fs/store/IObjectStore.h"
namespace facebook {
namespace eden {
BlobAccess::BlobAccess(
std::shared_ptr<IObjectStore> objectStore,
std::shared_ptr<BlobCache> blobCache)
: objectStore_{std::move(objectStore)}, blobCache_{std::move(blobCache)} {}
BlobAccess::~BlobAccess() {}
folly::Future<BlobCache::GetResult> BlobAccess::getBlob(
const Hash& hash,
ObjectFetchContext& context,
BlobCache::Interest interest,
ImportPriority priority) {
auto result = blobCache_->get(hash, interest);
if (result.blob) {
return folly::Future<BlobCache::GetResult>{std::move(result)};
}
return objectStore_->getBlob(hash, context, priority)
.thenValue([blobCache = blobCache_,
interest](std::shared_ptr<const Blob> blob) {
auto interestHandle = blobCache->insert(blob, interest);
return BlobCache::GetResult{std::move(blob), std::move(interestHandle)};
});
}
} // namespace eden
} // namespace facebook