私は毎日 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
上記の呼び出しでバインドできますか?