エンティティのフィールドデータを保存する - AWS SimSpace Weaver

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

エンティティのフィールドデータを保存する

以下の例は、アプリケーションが所有するエンティティのフィールドデータを保存する (ステートファブリックに書き込む) 方法を示しています。以下の例では、以下の関数を使用します。

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 はインデックスキー専用です (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)); }