엔터티의 필드 데이터 불러오기 - AWS SimSpace Weaver

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

엔터티의 필드 데이터 불러오기

다음 예제는 엔터티의 필드 데이터를 로드(상태 패브릭에서 읽기)하는 방법을 보여줍니다. 해당 예제에는 다음 함수가 사용됩니다.

Result<std::size_t> LoadEntityField( Transaction& txn, const Entity& entity, TypeId keyTypeId, FieldIndex index, std::int8_t** dest) noexcept;

Api::TypeId keyTypeId 파라미터는 Api::BuiltinTypeId에서 해당 Api::TypeId를 수신해야 합니다. 적절한 변환이 없는 경우 Api::BuiltinTypeId::Dynamic을 사용할 수 있습니다.

참고

FieldIndex 인덱스 값은 0보다 커야 합니다. 0 값은 인덱스 키용으로 예약되어 있습니다(StoreEntityIndexKey() 참조).

예 프리미티브 데이터 유형을 사용한 예제
namespace { constexpr Api::FieldIndex k_isTrueFieldId { /* value */ 1 }; } Result<void> LoadEntityFields( Api::Entity& entity, Transaction& transaction) { std::int8_t* dest = nullptr; WEAVERRUNTIME_TRY(Api::LoadEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Bool), k_isTrueFieldId, &dest)); bool isTrueValue = *reinterpret_cast<bool*>(dest); }
예 struct를 사용한 데이터 보관 예제
namespace { constexpr Api::FieldIndex k_dataFieldId { /* value */ 1 }; } struct Data { bool boolData; float floatData; }; Result<void> LoadEntityFields( Api::Entity& entity, Transaction& transaction) { std::int8_t* dest = nullptr; WEAVERRUNTIME_TRY(Api::LoadEntityField( transaction, entity, Api::BuiltinTypeIdToTypeId( Aws::WeaverRuntime::Api::BuiltinTypeId::Dynamic), k_dataFieldId, &dest)); Data dataValue = *reinterpret_cast<Data*>(dest); }