Boost.serialization で RCF を使用しています (オリジナルを既に使用しているのに、なぜ RCF のコピーを使用するのですか?) 問題なく動作しますが、サーバーで例外がスローされると、クライアントに正しく渡されません。archive_exception
代わりに、 「クラス名が長すぎます」という発言を引用する RCF::SerializationException を取得します。プロトコルを BsText に変更すると、例外は「未登録クラス」です。プロトコルを SfBinary に変更すると、動作します。次のように、サーバーとクライアントの両方に RemoteException を登録しました。
BOOST_CLASS_VERSION(RCF::RemoteException, 0)
BOOST_CLASS_EXPORT(RCF::RemoteException)
同じテストでa のシリアライズとデシリアライズを試みたところboost::shared_ptr<RCF::RemoteException>
、うまくいきました。
では、SF に頼らずに RCF に例外を正しく渡すにはどうすればよいでしょうか?