处理消息传递时的提示 - AWS SimSpace Weaver

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

处理消息传递时的提示

根据位置或应用程序名称解析端点

您可以使用该AllPartitions函数获取空间边界和域 ID,以确定消息分区 ID 和消息目的地。但是,如果您知道要发送消息的位置,但不知道其分区 ID,则可以使用该 MessageEndpointResolver 函数。

/** * Resolves MessageEndpoint's from various inputs **/ class MessageEndpointResolver { public: /** * Resolves MessageEndpoint from position information **/ Result<MessageEndpoint> ResolveEndpointFromPosition( const DomainId& domainId, const weaver_vec3_f32_t& pos); /** * Resolves MessageEndpoint from custom app name **/ Result<MessageEndpoint> ResolveEndpointFromCustomAppName( const DomainId& domainId, const char* agentName); };

序列化和反序列化消息负载

您可以使用以下函数来创建和读取消息负载。有关更多信息,请参阅本地系统上应用程序 SDK 库中的 MessagingUtils .h。

/** * Utility function to create MessagePayload from a custom type * * @return The @c MessagePayload. */ template <class T> AWS_WEAVERRUNTIME_API MessagePayload CreateMessagePayload(const T& message) noexcept { const std::uint8_t* raw_data = reinterpret_cast<const std::uint8_t*>(&message); MessagePayload payload; std::move(raw_data, raw_data + sizeof(T), std::back_inserter(payload.data)); return payload; } /** * Utility function to convert MessagePayload to custom type */ template <class T> AWS_WEAVERRUNTIME_API T ExtractMessage(const MessagePayload& payload) noexcept { return *reinterpret_cast<const T*>(payload.data.data()); }