AGENTS.md

基本信息

属性
代码仓名称 request
所属子系统 request
主要语言 C++、rust

目录结构

/base/request/request
├── common/              # 公共工具和模块
│   ├── utils/          # 通用工具 (日志、文件、哈希、LRU缓存等)
│   ├── request_core/   # 请求核心模块
│   ├── netstack_rs/    # 网络栈 Rust 封装
│   ├── ffrt_rs/        # FFRT (Foundation Foundation Runtime) Rust 封装
│   ├── database/       # 数据库模块
│   ├── sys_event/      # 系统事件
│   └── utf8_utils/     # UTF8 工具
├── frameworks/          # 框架实现
│   ├── native/         # 原生 C++/Rust 实现
│   │   ├── request/           # 请求模块
│   │   ├── request_next/      # 新请求模块 (Rust)
│   │   ├── request_action/    # 请求动作
│   │   ├── cache_download/    # 缓存下载
│   │   └── cache_core/        # 缓存核心
│   ├── js/             # JS NAPI 实现
│   │   └── napi/       # NAPI 绑定层
│   ├── ets/            # ArkTS 实现
│   │   └── ani/        # ANI (Ark Native Interface)
│   └── cj/             # Cangjie 语言支持
│       └── ffi/        # FFI 绑定
├── services/            # 服务实现
│   └── src/            # 下载服务主逻辑
├── interfaces/          # 接口定义
│   └── inner_kits/     # 内部 API
├── test/                # 测试
│   ├── unittest/       # 单元测试
│   │   ├── cpp_test/   # C++ 测试
│   │   ├── js_test/    # JS/ArkTS 测试
│   │   └── common/     # 公共测试工具
│   ├── fuzztest/       # 模糊测试
│   ├── rustest/        # Rust 测试
│   └── pretest/        # 预测试
├── etc/                 # 配置文件
│   ├── init/           # 服务启动配置
│   ├── sa_profile/     # SA (System Ability) 配置
│   └── icon/           # 图标配置
├── figures/             # 架构图
├── Cargo.toml          # Rust workspace 配置
├── rustfmt.toml        # Rust 格式化配置
└── bundle.json         # 组件元数据

代码仓概览

简介

本项目是 OpenHarmony Request 子系统,为第三方应用提供下载和上传服务。支持创建、删除、暂停、恢复和查询下载/上传任务。

核心功能

  • 下载服务: 提供文件下载能力,支持断点续传、多任务并发、进度回调
  • 上传服务: 提供文件上传能力,支持表单数据上传、进度监控
  • 缓存下载: 提供预加载和缓存管理能力,优化重复下载体验
  • 文件传输代理: 提供跨进程文件传输能力,支持后台任务管理

主要依赖

  • rust_cxx: Rust 与 C++ 互操作桥接
  • ylong_runtime: Rust 异步运行时
  • os_account: 系统账号管理
  • samgr: 系统能力管理器
  • init: 系统初始化
  • ipc: 进程间通信
  • certificate_manager: 证书管理
  • netmanager_base: 网络管理基础服务
  • eventhandler: 事件处理
  • ability_runtime: 能力运行时
  • relational_store: 关系型数据库存储
  • hilog: 系统日志
  • hisysevent: 系统事件

技术栈

编程语言

  • Rust (核心实现,310+ 文件)
  • C++ (FFI 和系统交互,113+ 文件)
  • TypeScript/ArkTS (JS/ETS API 层,58+ 文件)

框架与库

  • request_native: 原生请求库 (C++)
  • request: JS NAPI 请求模块
  • cache_download: 缓存下载库
  • preload_native: 预加载原生库
  • preload_napi: 预加载 NAPI 模块
  • cj_request_ffi: Cangjie FFI 绑定
  • ani_package: ArkTS 包
  • download_server: 下载服务

构建工具

  • GN: 构建配置
  • Ninja: 构建执行

构建与测试

构建命令

# cd 到 ../../../ 目录下运行, 依赖 build.sh 文件
./build.sh --product-name rk3568 --build-target out/rk3568/build_configs/request/request:request --no-indep

# 快速构建(不修改BUILD.gn等构建文件时使用)
./build.sh --product-name rk3568 --build-target out/rk3568/build_configs/request/request:request --no-indep --fast-build

构建测试

# cd 到 ../../../ 目录下运行, 依赖 build.sh 文件
./build.sh --product-name rk3568 --build-target out/rk3568/build_configs/request/request:request_test --no-indep

# 快速构建测试(不修改BUILD.gn等构建文件时使用)
./build.sh --product-name rk3568 --build-target out/rk3568/build_configs/request/request:request_test --no-indep --fast-build

产物位置

二进制产物(库文件)

位置:../../../out/rk3568/request/request/

包含:

  • librequest.z.so - 主请求库
  • librequest_action.z.so - 请求动作库
  • libdownload_server.dylib.so - 下载服务动态库
  • libpreload_native.z.so / libpreload_native_rust.z.so - 预加载库
  • libcachedownload.z.so / libcache_download_ani.so - 缓存下载库
  • libcj_request_ffi.z.so - Cangjie FFI 绑定库
  • *.rlib - Rust 静态库文件

测试产物(可执行文件)

位置:../../../out/rk3568/tests/unittest/request/request/request/

包含:

  • preload_test - Preload 模块 C++ 单元测试
  • fwkTest - 框架测试
  • innerTest - 内部接口测试
  • saTest - SA (System Ability) 测试
  • common_netstack_test - 网络栈测试
  • preload_napi_test - Preload NAPI 测试
  • inotify_image_test - 文件监控测试