Я знаю что DCOM это далеко не самый умный выбор для сетевого соединения, но так уж случилось что щас мне надо сделать что-б работало
Общие условие задачи:
— клиент соединяется с сервером через DCOM
— соединение между клиентом и сервером может разрываться, как минимум по следующим причинам:
— клиент умер (GPF)
— физическое соединение (кабель) был разорван
— после соединения, возможно через значительный промежуток времени, соединение может восстанавливаться
Большинство проблем я решил создавая сессионый объект на сервере, и использовуя ::CoDisconnectObject(), когда этот сессионый объект не нужен. Есть еще несколько проблем, надо которыми я работаю, вот одна из них, другие напишу по мере надоедания мне искать ответ самому :):
— если клиент вызывает, сервер и во время обработки вызова, сервер визически перегружают (например нажимая Reset), клиент остается в ожидании ответа — и это навсегда. Есть CoCancelCall, и прочие функции, но мои эксперементы пока не привели к желаемому результату. Есть идеи, как сделать что-бы по timeout'у вызов на клиентской стороне прикращался?