Я создаю простую программу сообщений в openDDS. В этой программе используется издатель и подписчик. В издателю я пишу сообщение с:OpenDDS - message_writer-> write (...) error DDS :: RETCODE_TIMEOUT
DDS::ReturnCode_t error = message_writer->write(message, DDS::HANDLE_NIL);
Когда я пытаюсь послать от 180 байт до 3012 байт, автор терпит неудачу с:
ошибки 10 (== ДДС :: 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;
};};
Так что это использует ТАО строки менеджер. Я передаю 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
Я получаю ошибку на стороне автора (Publisher), ошибка получена, когда я проверяю, является ли (ошибка! = 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