- Изначально клиент вызывает SubscribeItem и передает указатель на интерфейс подписчика.
- Затем клиент начинает вызывать WriteItem для сохранения или изменения элементов в зависимости от того, существуют ли они. Когда элемент изменяется, он вызывает sendc_EventItem.
- Кроме того, клиент проверяет эту цепочку, отправляя элемент проверки и ожидая его получения в течение таймаута. Если элемент проверки не получен в течение таймаута,
он отключает ORB и POA с помощью выключения и уничтожения, а затем инициирует процедуру повторного подключения. - После повторного подключения и восстановления всех подписок все вызовы sendc_EventItem завершаются с ошибкой:
TIMEOUT info exception: system exception, ID 'IDL:omg.org/CORBA/TIMEOUT:1.0'
TAO exception, minor code = 3e (timeout during recv; low 7 bits of errno: 62 Timer expired), completed = MAYBE
Как это исправить?
Я использую ACE 7.1.1 и TAO 3.1.1.
Сервер Политика:
CORBA::Object_var manager_object =
orb_->resolve_initial_references("ORBPolicyManager");
CORBA::PolicyManager_var policy_manager = CORBA::PolicyManager::_narrow(manager_object.in());
if (CORBA::is_nil(policy_manager.in()))
ACE_ERROR_RETURN((LM_ERROR,
" (%P|%t) Panic: nil PolicyManager\n"), 1);
CORBA::Any policy_value;
policy_value
Подробнее здесь: https://stackoverflow.com/questions/797 ... rba-server
Мобильная версия