我在openDDS中創建一個簡單的消息程序。該程序使用發佈者和訂閱者。在發佈我寫一條消息:OpenDDS - message_writer->寫(...)錯誤DDS :: RETCODE_TIMEOUT
DDS::ReturnCode_t error = message_writer->write(message, DDS::HANDLE_NIL);
當我嘗試從180個字節的發送到3012個字節作家失敗:
錯誤10(== DDS :: RETCODE_TIMEOUT)
,約260條消息後(我試圖發送1500條消息)。我覺得奇怪的是,當我發送的消息是從1 < = x < 180和3012> x> 102400 +字節時,它工作。
我在作者方收到錯誤。下面筆者我做的:
if (error != DDS::RETCODE_OK) {
std::cerr << "writer failed because of error" << error << std::endl;
}
我的IDL文件就像這樣:
module Mess {
struct Mes {
string message;
};};
所以這裏採用TAO串管理。我將一個char *傳遞給消息。
Messenger::Message message;
message.message = "some_Message";
然後寫郵件像以前一樣
參與者:
DDS::DomainParticipant_var participant = dpf->create_participant(DOMAIN_ID, PARTICIPANT_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
主題:
DDS::Topic_var topic = participant->create_topic("TopicName", type_name, TOPIC_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
出版商:
DDS::Publisher_var publisher = participant->create_publisher(PUBLISHER_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
作家:
DDS::DataWriter_var writer = publisher->create_datawriter(topic, DATAWRITER_QOS_DEFAULT, 0, OpenDDS::DCPS::DEFAULT_STATUS_MASK);
任何幫助十分讚賞。謝謝!
您可以添加您的消息結構以及如何創建作者/發佈者/主題/參與者的完整代碼?你是否在編劇方或接收方收到錯誤? – Black0ut
我收到編寫者方(發佈者)的錯誤,當我檢查是否(錯誤!= DDS :: RETCODE_OK)時收到錯誤。那麼錯誤是= 10。 – DKo
您爲所有發送的消息只創建一次參與者/主題/發佈者/編寫者一次? 因此,我們知道錯誤!= DDS :: RETCODE_OK,您可以將錯誤變量與枚舉中的其他選項(DDS :: ReturnCode_t:http://community.rti.com/docs/html/api_dotnet/group__DDSReturnTypesModule .html),這樣你就可以得到更有意義的錯誤描述(例如DDS :: RETCODE_TIMEOUT,DDS :: RETCODE_ILLEGAL_OPERATION等),這可能會以正確的方式爲您提供解決方案 – Black0ut