SuperAPI AI 工具集

cpp-server

编程与开发

查看项目

更新于 10-16 04:58

技能介绍

用途:SpacetimeDB C++ 服务端模块 SDK 参考,供使用 C++ 编写表(tables)、reducer 和模块逻辑时查阅。

主要能力:

  • 引�入与命名空间: #include <spacetimedb.h> ;using namespace SpacetimeDB; 。
  • 表定义:用 SPACETIMEDB_STRUCT 注册结构体,再用 SPACETIMEDB_TABLE(Type, accessor, Public|Private) 声明为表;加第四个参数 true 时为事件表。字段约束包括 FIELD_PrimaryKey、FIELD_PrimaryKeyAutoInc(插入时用 0)、FIELD_Unique、FIELD_Index(btree 索引,支持 .filter()),以及多列索引 FIELD_NamedMultiColumnIndex。
  • 列类型:无符号/有符号整数、SpacetimeDB::u128/u256、i128/i256、float/double、bool、std::string、std::vector<T>、std::optional<T>,以及 Identity、ConnectionId、Timestamp、TimeDuration、ScheduleAt。
  • 索引与查询:单列与多列索引,范围查询 range_inclusive、range_from(通常由 spacetimedb.h 提供)。
  • Reducer:所有 reducer 返回 ReducerResult,用 Ok() 或 Err(message);通过 SPACETIMEDB_REDUCER 宏定义。
  • 数据库操作:ctx.db[accessor] 括号访问,支持 insert、find、filter、遍历全部行、count、update、delete_by_key。
  • 生命周期钩子:SPACETIMEDB_INIT、SPACETIMEDB_CLIENT_CONNECTED、SPACETIMEDB_CLIENT_DISCONNECTED。
  • 认证与时间:ctx.sender() 为调用者 Identity,ctx.timestamp 为调用时间戳,可用 TimeDuration 做时间运算。
  • ReducerContext 提供 ctx.db、ctx.sender()、ctx.timestamp、ctx.connection_id、ctx.identity()、ctx.rng()、ctx.sender_auth();模块内不提供标准库时钟与随机源。
  • 定时表:SPACETIMEDB_SCHEDULE 绑定字段索引与处理 reducer,支持一次性 ScheduleAt::time 与周期性 ScheduleAt::interval。
  • 自定义类型:SPACETIMEDB_STRUCT 定义结构体,SPACETIMEDB_UNIT_TYPE 与 SPACETIMEDB_ENUM 定义枚举。
  • 日志:LOG_INFO、LOG_WARN、LOG_ERROR、LOG_DEBUG、LOG_PANIC(终止 reducer)。

使用方式:按上述宏与 API 定义结构体、表、索引与 reducer,并在 reducer 内通过 ctx 访问数据库与上下文。资料未提供安装命令、构建方式或运行步骤。

适用场景:在 SpacetimeDB 中以 C++ 编写服务端模块逻辑。

限制:模块内不可使用标准库时钟与随机源,需通过 ctx 获取确定性的时间与随机数;资料未提供收费、平台支持范围与性能数据。