存储实体的字段数据 - AWS SimSpace Weaver

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

存储实体的字段数据

以下示例演示如何存储(写入 State Fabric)应用程序拥有的实体的字段数据。这些示例使用以下函数:

AWS_WEAVERRUNTIME_API Result<void> StoreEntityField( Transaction& txn, const Entity& entity, TypeId keyTypeId, FieldIndex index, std::int8_t* src, std::size_t length) noexcept;

Api::TypeId keyTypeId 参数表示传入数据的数据类型。

Api::TypeId keyTypeId 参数应从 Api::BuiltinTypeId 接收相应的 Api::TypeId。如果没有适当的转换,则可以使用 Api::BuiltinTypeId::Dynamic

对于复杂的数据类型,请使用 Api::BuiltInTypeId::Dynamic

注意

FieldIndex index 的值必须大于 0。0 是为索引键保留的值(请参阅 StoreEntityIndexKey())。

例 使用基元数据类型的示例
namespace { constexpr Api::FieldIndex k_isTrueFieldId { /* value */ 1 }; } Result<void> SetEntityFields( Api::Entity& entity, Transaction& transaction) { bool value = true; auto* src = reinterpret_cast<std::int8_t*>(value); size_t length = sizeof(*value); WEAVERRUNTIME_TRY(Api::StoreEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Bool), k_isTrueFieldId, src, length)); }
例 使用 struct 保留数据的示例
namespace { constexpr Api::FieldIndex k_dataFieldId { /* value */ 1 }; } struct Data { bool boolData; float floatData; }; Result<void> SetEntityFields( Api::Entity& entity, Transaction& transaction) { Data data = { /* boolData */ false, /* floatData */ -25.93 }; auto* src = reinterpret_cast<std::int8_t*>(data); size_t length = sizeof(*data); WEAVERRUNTIME_TRY(Api::StoreEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Dynamic), k_dataFieldId, src, length)); }