Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.043 c
3-1081831042
_новый_
2004-04-13 08:37
2004.04.11
Как записать в BLOB поле файл?


3-1082022725
Capricorn7B
2004-04-15 13:52
2004.04.11
Глюк в компоненте IBDataSet


3-1078931138
Goida
2004-03-10 18:05
2004.04.11
Выборка в выборке


3-1081533189
SergP
2004-04-09 21:53
2004.04.11
Можно ли сделать такой интерестный select?


4-1075794884
LiteX
2004-02-03 10:54
2004.04.11
Поиск файлов и определение доступных дисков в системе.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский