初始提交: UE5.3项目基础框架
This commit is contained in:
73
Plugins/CesiumForUnreal/Source/ThirdParty/include/CesiumAsync/ICacheDatabase.h
vendored
Normal file
73
Plugins/CesiumForUnreal/Source/ThirdParty/include/CesiumAsync/ICacheDatabase.h
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
#pragma once
|
||||
|
||||
#include "CacheItem.h"
|
||||
#include "IAssetRequest.h"
|
||||
#include "Library.h"
|
||||
|
||||
#include <cstddef>
|
||||
#include <optional>
|
||||
|
||||
namespace CesiumAsync {
|
||||
/**
|
||||
* @brief Provides database storage interface to cache completed request.
|
||||
*/
|
||||
class CESIUMASYNC_API ICacheDatabase {
|
||||
public:
|
||||
virtual ~ICacheDatabase() noexcept = default;
|
||||
|
||||
/**
|
||||
* @brief Gets a cache entry from the database.
|
||||
*
|
||||
* If an error prevents checking the database for the key, this function,
|
||||
* depending on the implementation, may log the error. However, it should
|
||||
* return `std::nullopt`. It should not throw an exception.
|
||||
*
|
||||
* @param key The unique key associated with the cache entry.
|
||||
* @return The result of the cache lookup, or `std::nullopt` if the key does
|
||||
* not exist in the cache or an error occurred.
|
||||
*/
|
||||
virtual std::optional<CacheItem> getEntry(const std::string& key) const = 0;
|
||||
|
||||
/**
|
||||
* @brief Store a cache entry in the database.
|
||||
*
|
||||
* @param key the unique key associated with the response
|
||||
* @param expiryTime the time point that this response should be expired. An
|
||||
* expired response will be removed when prunning the database.
|
||||
* @param url The URL being cached.
|
||||
* @param requestMethod The HTTP method being cached.
|
||||
* @param requestHeaders The HTTP request headers being cached.
|
||||
* @param statusCode The HTTP response status code being cached.
|
||||
* @param responseHeaders The HTTP response headers being cached.
|
||||
* @param responseData The HTTP response being cached.
|
||||
* @return `true` if the entry was successfully stored, or `false` if it could
|
||||
* not be stored due to an error.
|
||||
*/
|
||||
virtual bool storeEntry(
|
||||
const std::string& key,
|
||||
std::time_t expiryTime,
|
||||
const std::string& url,
|
||||
const std::string& requestMethod,
|
||||
const HttpHeaders& requestHeaders,
|
||||
uint16_t statusCode,
|
||||
const HttpHeaders& responseHeaders,
|
||||
const std::span<const std::byte>& responseData) = 0;
|
||||
|
||||
/**
|
||||
* @brief Remove cache entries from the database to satisfy the database
|
||||
* invariant condition (.e.g exired response or LRU).
|
||||
*
|
||||
* @return `true` if the database was successfully pruned, or `false` if it
|
||||
* could not be pruned due to an errror.
|
||||
*/
|
||||
virtual bool prune() = 0;
|
||||
|
||||
/**
|
||||
* @brief Removes all cache entries from the database.
|
||||
*
|
||||
* @return `true` if the database was successfully cleared, or `false` if it
|
||||
* could not be pruned due to an errror.
|
||||
*/
|
||||
virtual bool clearAll() = 0;
|
||||
};
|
||||
} // namespace CesiumAsync
|
||||
Reference in New Issue
Block a user