本文整理汇总了C++中fetcherinfo::Item::cache_filename方法的典型用法代码示例。如果您正苦于以下问题:C++ Item::cache_filename方法的具体用法?C++ Item::cache_filename怎么用?C++ Item::cache_filename使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fetcherinfo::Item
的用法示例。
在下文中一共展示了Item::cache_filename方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Error
// Returns the resulting file or in case of extraction the destination
// directory (for logging).
static Try<string> fetchFromCache(
const FetcherInfo::Item& item,
const string& cacheDirectory,
const string& sandboxDirectory)
{
LOG(INFO) << "Fetching from cache";
Try<string> basename = Fetcher::basename(item.uri().value());
if (basename.isError()) {
return Error(basename.error());
}
string destinationPath = path::join(sandboxDirectory, basename.get());
// Non-empty cache filename is guaranteed by the callers of this function.
CHECK(!item.cache_filename().empty());
string sourcePath = path::join(cacheDirectory, item.cache_filename());
if (item.uri().executable()) {
Try<string> copied = copyFile(sourcePath, destinationPath);
if (copied.isError()) {
return Error(copied.error());
}
return chmodExecutable(copied.get());
} else if (item.uri().extract()) {
Try<bool> extracted = extract(sourcePath, sandboxDirectory);
if (extracted.isError()) {
return Error(extracted.error());
} else if (extracted.get()) {
return sandboxDirectory;
} else {
LOG(WARNING) << "Copying instead of extracting resource from URI with "
<< "'extract' flag, because it does not seem to be an "
<< "archive: " << item.uri().value();
}
}
return copyFile(sourcePath, destinationPath);
}
示例2: Error
// Returns the resulting file or in case of extraction the destination
// directory (for logging).
static Try<string> fetchThroughCache(
const FetcherInfo::Item& item,
const Option<string>& cacheDirectory,
const string& sandboxDirectory,
const Option<string>& frameworksHome)
{
if (cacheDirectory.isNone() || cacheDirectory.get().empty()) {
return Error("Cache directory not specified");
}
if (!item.has_cache_filename() || item.cache_filename().empty()) {
// This should never happen if this program is used by the Mesos
// slave and could then be a CHECK. But other uses are possible.
return Error("No cache file name for: " + item.uri().value());
}
CHECK_NE(FetcherInfo::Item::BYPASS_CACHE, item.action())
<< "Unexpected fetcher action selector";
if (item.action() == FetcherInfo::Item::DOWNLOAD_AND_CACHE) {
LOG(INFO) << "Downloading into cache";
Try<Nothing> mkdir = os::mkdir(cacheDirectory.get());
if (mkdir.isError()) {
return Error("Failed to create fetcher cache directory '" +
cacheDirectory.get() + "': " + mkdir.error());
}
Try<string> downloaded = download(
item.uri().value(),
path::join(cacheDirectory.get(), item.cache_filename()),
frameworksHome);
if (downloaded.isError()) {
return Error(downloaded.error());
}
}
return fetchFromCache(item, cacheDirectory.get(), sandboxDirectory);
}