load过程
来源:互联网 发布:买淘宝账号 编辑:程序博客网 时间:2024/04/29 06:34
template<typename T> const T& load_blob_obj_(const blob_info& binfo) const { XR_PRE_CONDITION(binfo.flag == T::flag);//异常安全if(!binfo.cache){//cache是智能指针 auto& seek = m_data_file.get<io::random>();//打开文件 seek.seek(binfo.offset);// auto source = io::exchange::as_source(m_data_file.get<io::reader>());//反序列化??返回类型没搞明白 unique_ptr<T> b(new T); load(source, *b, m_xr); binfo.cache = std::move(b);//b原来是一个智能指针,将其转换为一个右值,同时删除指针 } return *static_cast<T*>(binfo.cache.get());//获得智能指针保存的地址指针 }
//返回的是哈希:掩码(version_type),对应文件内容(blob_info) const blob_info_map::value_type* try_load_blob_(const version_type& ver) const { //m_blob_infos是blob_info_map类型,这个类型继承自std::unordered_map<version_type, blob_info, hash_version_type> //m_blob_infos是LocalRepositoryImp的成员,包含的是掩码和对应文件内容信息 auto pos = m_blob_infos.find(ver); if (pos == m_blob_infos.end()) return nullptr; //根据flag信息判断是哪一种数据类型 switch(pos->second.flag){ case bt_tree: load_blob_obj_<tree_blob>(pos->second); break; case bt_submission: { auto& subm = load_blob_obj_<Submission>(pos->second); const_cast<Submission&>(subm).version = ver; } break; case bt_metadata: load_metadata_(ver); break; case bt_file: // do nothing break; default: XR_THROW(bad_repository_exception)("bad blob info flag"); };
Submission* try_load_submission_(const version_type& ver) const {auto binfo = try_load_blob_(ver);if (binfo && binfo->second.flag == bt_submission)return static_cast<Submission*>(binfo->second.cache.get());return nullptr;}
阅读全文
0 0
- load过程
- Resources.load加载过程研究
- ETL(Extract、Transform、Load )实现过程
- DB2存储过程中LOAD CURSOR 使用
- java进程 cpu load过高分析过程
- asp.net 页面Load事件执行过程
- Liberty nova-api load app过程跟踪
- Tomcat源码阅读之Load过程
- Touch---load kl文件的过程
- 一次load飙高排查过程
- grub2中 load 模块的过程
- LOAD
- LOAD
- Load
- +load
- 一次load飙高的故障分析过程
- 一个load飙高的过程分析,非常有价值。
- 发布过程5分钟内load飙升问题排查
- (2)选择器:class选择器、id选择器、关联选择器、组合选择器、伪元素选择器
- vs远程调试
- AssertJ 单元测试工具介绍
- Linux下线程同步
- java小知识点-获取变量得数据类型
- load过程
- VO、 DTO、 DO、 PO 的区别
- JEESZ分布式框架简介
- 内核启动流程分析
- 在 MySQL中,从10 万条主键不连续的数据里随机取 3000 条,如何做到高效?
- tp5 二级导航 合并
- 关于“自动编程软件”的一些问答
- C++对象实例化及调用
- 初识Shiro