Повторное подключение к серверу CORBAC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Повторное подключение к серверу CORBA

Сообщение Anonymous »

Сервер CORBA отправляет события клиенту с помощью AMI, вызывая метод sendc_EventItem.
  • Изначально клиент вызывает 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
Однако, если я вызываю синхронный метод EventItem, все последующие вызовы sendc_EventItem перестают возвращать ошибки и работают правильно.
Как это исправить?
Я использую 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»