Форум: "Основная";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
ВнизУничтожение RDM Найти похожие ветки
← →
Alexander_K (2010-12-08 12:19) [0]Всем добрый день!
У меня есть трехзвенное MIDAS приложение. Клиент подключается к серверу приложений, в котором соответсвтенно имеется Remote Data Module (в конечном итоге все это работает через COM). RDM создается как Instancing: ciMultiInstance , а Threading model: tmSingle. То есть на каждого клиента создается отдельный поток.
Обычно, при нормальном завершении клиентской части программы, серверная часть завершается нормально, но вот когда пропадает сетевое соединение (возможны наверное еще случаи) клиент теряет связь с серверной частью, и после завершения клиента серверная часть уже не закрывается сама.
В связи с этим хочу сделать механизм, по которому сервер бы определял: живой ли клиент или нет.
Как это сделать наверное не важно (можно например по таймеру раз в несколько минут выполнять какой-нибудь метод на сервере, по которому сервер будет и определять жив клиент или нет).
Но вот потом встает вопрос:
Сервер определил, что клиент не откликается какое-то время, и нужно закрываться.
Так вот вопрос: как корректно завершиться серверному потоку самому из себя?
← →
Сергей М. © (2010-12-08 20:08) [1]Exit;
← →
_Юрий (2010-12-09 00:29) [2]Надо ковырять код фабрики, которая создает и разрушает ремоут-дата-модули, и смотреть как это можно сделать по моему, модуль называется ComSrv, сейчас нет под рукой исходников.
Завтра тоже гляну, у меня точно такая же проблема.
По поводу определения живости клиента думаю сделать так: на вызове каждого метода запоминать время, и параллельно пустить поток который будет отслеживать, нет ли простаивающих более какой то величины.
← →
Alexander_K (2010-12-09 11:01) [3]Похоже нашел:
CoDisconnectObject(Self, 0);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.019 c