Мне в начале дня после подключения к серверу нужно узнать, когда прогрузятся все остатки, графики, котировки, лимиты. В начале дня после подключения к серверу наступает момент безвоеменья, когда вроде коннект есть, а данных еще нет. Как узнать, что загрузка завершилась?
Сергей Ханжин пишет: Правильно ли я понял, резюме в том, что надежно узнать нельзя никак?
Да, правильно. И, несмотря на то, что разработчикам был предложен вариант решения, который бы всех устраивал, они всё равно включают... в общем вы поняли... И делают вид, что не понимают, чего от них хотят.
Надо делать так, как надо. А как не надо - делать не надо.
Серж пишет: Да, правильно. И, несмотря на то, что разработчикам был предложен вариант решения, который бы всех устраивал, они всё равно включают... в общем вы поняли... И делают вид, что не понимают, чего от них хотят.
Michael Bulychev пишет: Не могли бы Вы привести эти цитаты с решением?
:o Да вот хотя бы:
Цитата
quio пишет:
Корректное решение данной задачи зависит от реализации клиент-серверного взаимодействия, которая известна только вам. Однако универсальное решение здесь уже звучало: 1. Во все таблицы добавляется флаг, типа "инициализирована", который сбрасывается ПЕРЕД подключением; 2. После подключения первым пакетом с сервера передается количество имеющихся в данный момент записей на сервере для данной таблицы; 3. При получении пакета из п.2 для соответствующей таблицы ставится признак "инициализирована" и сохраняется полученное количество записей.
В пользовательском коде мы сначала смотрим флаг "инициализирована". Если нет, ждем. Если да, получаем, сколько строк таблицы было на сервере в момент подключения и сравниваем это значение с уже имеющимся количеством записей в этой таблице.
Все рассуждения на тему, что пока этот пакет дойдёт до клиента, количество записей может измениться, расценивается, как "отмазка", чтобы ничего не делать.
Надо делать так, как надо. А как не надо - делать не надо.
Все рассуждения на тему, что пока этот пакет дойдёт до клиента, количество записей может измениться, расценивается, как "отмазка", чтобы ничего не делать.
Серж.
Представьте модель.
Склад А (биржа). Склад В (сервер) Склад С (терминал)
Со склада А на склад В везут помидоры. Склад В не имеет понятия, когда помидоры к нему прибудут и прибудут ли вообще. Они имеют информацию о прибытии только в момент, когда оприходована приходная накладная.
Со склада В на склад С ИМЕЮЩИЕСЯ помидоры отправляются на склад С.
Надо иметь ввиду, что дорога между складами тоже занимает время.
Поэтому. Склад В НИКАК не может сообщить складу С (курьером, который тоже едет не мгновенно), что ВСЕ помидоры, отгруженные со склада А, достигли склада С. Он просто этого не знает. И никакие технические ухищрения этому не помогут. Помидоры могут быть в пути между А и В. Более того, за время, когда курьер едет с соообщением об окончании помидоров, новая партия может быть уже отправлена.
Поэтому любые поиски технического решения задачи бессмысленны. Такого решения нет. Именно поэтому разработчики и не в состоянии установить в складе С (терминале) никакие флаги "об окончательной загрузке" или "об актуальности данных"
s_mike@rambler.ru пишет: Поэтому. Склад В НИКАК не может сообщить складу С(курьером, который тоже едет не мгновенно), что ВСЕ помидоры, отгруженные со склада А, достигли склада С.Он просто этого не знает. И никакие технические ухищрения этому не помогут.Помидоры могут быть в пути между А и В. Более того, за время, когда курьер едет с соообщением об окончании помидоров, новая партия может быть уже отправлена.
Это все понятно. Никто не просит сообщать о помидорах, не доехавших до В. Люди хотят знать, сколько помидоров было на складе В (т.е. сколько записей в таблице на сервере брокера) только на момент подключения к нему терминала С. И нужно это потому, что процесс передачи данных от сервера (В) до терминала (С) сразу после подключения занимает некоторое время, причем неопределенное. В это время на терминал передаются в основном данные, накопленные сервером раньше, а не только что приехавшие с биржи. И люди хотят иметь механизм точного определения того, что данные, находившиеся на сервере брокера (В) на момент установления связи с терминалом (С), наконец-то загрузились с сервера на терминал.
s_mike@rambler.ru пишет: Поэтому. Склад В НИКАК не может сообщить складу С(курьером, который тоже едет не мгновенно), что ВСЕ помидоры, отгруженные со склада А, достигли склада С.Он просто этого не знает. И никакие технические ухищрения этому не помогут.Помидоры могут быть в пути между А и В. Более того, за время, когда курьер едет с соообщением об окончании помидоров, новая партия может быть уже отправлена.
Это все понятно. Никто не просит сообщать о помидорах, не доехавших до В. Люди хотят знать, сколько помидоров было на складе В (т.е. сколько записей в таблице на сервере брокера) только на момент подключения к нему терминала С. И нужно это потому, что процесс передачи данных от сервера (В) до терминала (С) сразу после подключения занимает некоторое время, причем неопределенное. В это время на терминал передаются в основном данные, накопленные сервером раньше, а не только что приехавшие с биржи. И люди хотят иметь механизм точного определения того, что данные, находившиеся на сервере брокера (В) на момент установления связи с терминалом (С), наконец-то загрузились с сервера на терминал.
И это тоже невозможно принципиально. Немного поразмыслив, Вы тоже придете к этому заключению.
s_mike@rambler.ru, вы что, сговорились с разработчиками? По приведённой мной выше ссылке разработчикам на 5-ти страницах пытаются объяснить, что при подключении клиента к серверу требуется первым делом передать клиенту количество записей, которыми располагает сам сервер. Ничего более. Никаких гаданий, что "груз" в пути не нужно. Только то, что есть сейчас. И "окончательная загрузка" имеется ввиду по отношению к моменту подключения к серверу. Не заставляйте переписывать предыдущую тему сюда, лучше почитайте здесь.
Надо делать так, как надо. А как не надо - делать не надо.
s_mike@rambler.ru пишет: И это тоже невозможно принципиально. Немного поразмыслив, Вы тоже придете к этому заключению.
Над этим размышлял не я один. И почему-то нам кажется, что возможно. Чего в принципе невозможного в том, чтобы зафиксировать количество записей в наиболее важных для пользователей таблицах сервера на момент установления соединения с терминалом и затем передать сведения о количестве этих записей на терминал пользователя?