0

私は毎日 dds について学んでいるので、私の質問は奇妙に聞こえます。それが理にかなっていることを願っています。

私が書いている一部の dds ラッパーの要件の 1 つは、書き込みに失敗した場合、一定のタイムアウト期間の後にタイムアウトすることです。私の質問:どうすればそれを行うことができますか?

Prism Tech の Web サイトのチュートリアルでは、a を使用して読み取り操作をブロックする方法が説明されていますWaitSetが、書き込みはどうでしょうか。

質問を含むいくつかのコードを次に示します。

dds::domain::DomainParticipant dp(0);
dds::topic::Topic<MyType> topic(dp, "MyTopic");
dds::pub::Publisher pub(dp);
dds::pub::DataWriter<MyType> dw(pub, topic);

MyType t;
dw.write(t); //how can I make this block for 5 seconds (tops), and then throw an error on failure?

API に関数が存在することに気付きましたが、これは書き込みの特定の呼び出しではなくDataWriter::wait_for_acknowledgements(int timeout)、オブジェクトにバインドされているようです。DataWriter上記の呼び出しでバインドできますか?

4

1 に答える 1