Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

midas and callback   Найти похожие ветки 

 
Dedushka_Mazai ©   (2004-03-11 14:00) [0]

как можно организовать callback для трёхзвенки (tsocketconnection)?


 
Nikolay M. ©   (2004-03-11 14:02) [1]

http://rsdn.ru/article/db/callback.xml
:) В Потрепаться в одной из веток обсуждается :)


 
Digitman ©   (2004-03-11 14:02) [2]

не знаю как в Д7, но в Д5 без основательной переделки BSS не обойтись


 
Romkin ©   (2004-03-11 14:15) [3]

Щаз! Там как раз на D5 сделано...


 
Nikolay M. ©   (2004-03-11 14:23) [4]


> Romkin ©   (11.03.04 14:15) [3]

Кулхацкер ты :)


 
Digitman ©   (2004-03-11 14:30) [5]


> Romkin ©   (11.03.04 14:15) [3]


я видел этот код

согласись, это - эрзац-колбэк, а не настоящий колбэк ...

сериализация в контексте одного и того же код.потока накладывает серьезные ограничения.. потому и упомянул о необходимости переделки BSS


 
Polevi ©   (2004-03-11 14:34) [6]

у меня вообще есть подозрения что при определенных условиях этот код не будет работать


 
Digitman ©   (2004-03-11 14:38) [7]


> Polevi ©   (11.03.04 14:34) [6]


и они вполне оправданы


 
Romkin ©   (2004-03-11 14:49) [8]

А фиг его знает :((
Я так и не дошел до реальной реализации.
>сериализация в контексте одного и того же код.потока накладывает серьезные ограничения.. потому и упомянул о необходимости переделки BSS

Это о том, что на клиенте обратный вызов в основной поток идет? На мой взгляд, удобно.
Интересно, и при каких условиях работать не будет?


 
Nikolay M. ©   (2004-03-11 14:51) [9]


> Polevi ©   (11.03.04 14:34) [6]
> у меня вообще есть подозрения что при определенных условиях
> этот код не будет работать

Подтверждаю (чисто из практики). Просто нагло содрал код один в один, встроил в свою программу как фичу менеджерам для обмена сообщениями. Иногда сообщение уходило в никуда без каких бы то ни было ошибок.


 
Romkin ©   (2004-03-11 15:00) [10]

Дык надо было оттрассировать, и исправление - в комментарии :)


 
Digitman ©   (2004-03-11 15:09) [11]


> Romkin ©   (11.03.04 14:49) [8]


> Это о том, что на клиенте обратный вызов в основной поток
> идет?


основной или не основной - не важно ... в вызывающий ..

т.е. вызывающий поток клиента сделал запрос (callsig) и ждет результата (resultsig) .. вместо этого он в ответ может получить кучу callsig-пакетов и вынужден их обрабатывать и возвращать resultsig

к тому же rdm , работающий под контролем BSS, не имеет возможности инициировать колбэк асинхронно, в произвольный момент времени (только в момент времени, когда как реакция на запрос клиента выполняется некий из методов объекта в этом rdm)


 
Romkin ©   (2004-03-11 15:19) [12]

>т.е. вызывающий поток клиента сделал запрос (callsig) и ждет результата (resultsig) .. вместо этого он в ответ может получить кучу callsig-пакетов и вынужден их обрабатывать и возвращать resultsig

Нет, на клиенте коллбек получается в другом потоке, и синхронизируется сообщением. То есть пока основной поток чего-то ждет - ничего он не получит. Только при выборке сообщений.

>к тому же rdm , работающий под контролем BSS, не имеет возможности инициировать колбэк асинхронно, в произвольный момент времени (только в момент времени, когда как реакция на запрос клиента выполняется некий из методов объекта в этом rdm)

Вот это странно... У меня вроде асинхронно все шло, я же тестировал... Один клиент отправляет - второй получает, если метод сервера в это время не дергал


 
Polevi ©   (2004-03-11 16:10) [13]

а если дергал


 
Romkin ©   (2004-03-11 16:23) [14]

А если дергал - обработка пойдет после возврата из этого метода.


 
Polevi ©   (2004-03-11 16:35) [15]

ладно, спорить не буду, но использовать данный код не рекомендую :-)
ты вот сам его сначала используй где нибудь :))


 
Romkin ©   (2004-03-11 16:37) [16]

Вот еще :)) Я туда сначала малшалинг вмонтирую, с объектами - некрасиво ;)
Вот нужды до сих пор в таком не было...


 
Dedushka_Mazai ©   (2004-03-16 13:47) [17]

Написал-таки колбэк, правда сделал это слегка не так, как описано в упомянутой выше статье: при коннекте каждого нового клиента передаю (как и было описано) интерфейс обратного вызова на сервер, потом делаю маршалинг интерфеса в стрим с помощью CoMarshalInterThreadInterfaceInStream. для отсылки сообщений обратно использую CoGetInterfaceAndReleaseStream для получения интерфейса из стрима, вызываю соотв. метод интерфейса и потом обратно сохраняю интерфейс в стрим. Вроде всё работает. Хотелось бы узнать мнение знающих людей обо всём этом.


 
Dedushka_Mazai ©   (2004-03-16 13:48) [18]

Написал-таки колбэк, правда сделал это слегка не так, как описано в упомянутой выше статье: при коннекте каждого нового клиента передаю (как и было описано) интерфейс обратного вызова на сервер, потом делаю маршалинг интерфеса в стрим с помощью CoMarshalInterThreadInterfaceInStream. для отсылки сообщений обратно использую CoGetInterfaceAndReleaseStream для получения интерфейса из стрима, вызываю соотв. метод интерфейса и потом обратно сохраняю интерфейс в стрим. Вроде всё работает. Хотелось бы узнать мнение знающих людей обо всём этом.


 
Polevi ©   (2004-03-16 14:52) [19]

совсем не понял причем тут маршалинг если честно
В варианте Romkin тоже "Вроде всё работает", до поры до времени


 
Dedushka_Mazai ©   (2004-03-16 15:19) [20]

как это "причём"? чтобы сделать рассылку сообщений клиентам из одного места (из другого потока), а не создавать для каждого клиента доп. окно и отсылать сообщения в его WndProc-е, как сделал Romkin. Кстати, все тут хаили его код: "вот мол, всё это сомнительно и может не работать...", а никаких осмысленных замечаний никто не привёл


 
Romkin ©   (2004-03-16 15:30) [21]

Ну да. Я тогда первый попавшийся способ синхронизации реализовал, так что все правильно, нафиг сообщения, все через интерфейсы надо делать


 
Polevi ©   (2004-03-16 17:39) [22]

>Dedushka_Mazai ©   (16.03.04 15:19) [20]
я имел в виду что не важно каким способом делать на апп сервере - твоим или Romkin"a, проблема находится на уровне winsock транспорта данных, я в свое время очень конкретно изучал исходники и сделал для себя вывод. конкретно сказать не могу - надо вспоминать, давно это было


 
Polevi ©   (2004-03-16 17:54) [23]

щас поднял нашь с Romkin спор годичной давности - в общем я пришел тогда к выводу что при такой системе возможен deadlock, когда клиентская и серверная части вызовут блокирующий winsock.send


 
Dedushka_Mazai ©   (2004-03-16 18:07) [24]

то бишь, это есть бага BSS, как упоминалось выше?
а можно как-нибудь оценить вероятность возникновения такого дэдлока?



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.035 c
14-1079174367
Undert
2004-03-13 13:39
2004.04.11
Вопрос не в тему


3-1079510121
Cj_Nik
2004-03-17 10:55
2004.04.11
Отобразить первые n записей талицы


14-1079518420
ИМХО
2004-03-17 13:13
2004.04.11
"Зимние Олимпийские виды спорта"


11-1061655723
dictator
2003-08-23 20:22
2004.04.11
В KOL приложении новые объекты не воспринимаются и сложно поменят


1-1080129041
venus
2004-03-24 14:50
2004.04.11
Компанент