翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
メッセージングを使用する際のヒント
位置またはアプリ名からエンドポイントを解決する
AllPartitions
関数を使用して、メッセージパーティション ID とメッセージ送信先を決定するために必要な空間境界とドメイン IDsを取得できます。ただし、メッセージする位置はわかっていても、パーティション 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()); }