Anonymous | Login | Signup for a new account | 21-11-24 12:45 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
0002333 | SAS.Планета | Рефакторинг | public | 06-02-2014 08:23 | 30-12-2021 08:59 | ||||||||
Reporter | zed | ||||||||||||
Assigned To | |||||||||||||
Priority | normal | Severity | minor | Reproducibility | have not tried | ||||||||
Status | confirmed | Resolution | open | ||||||||||
Platform | OS | OS Version | |||||||||||
Product Version | 131111 | ||||||||||||
Target Version | 26xxxx | Fixed in Version | |||||||||||
Summary | 0002333: Добавить нотифаеры в качалку видимой области | ||||||||||||
Description | Сейчас качалка никак не реагирует на смену версии/url и типа хранилища, а реагировать нужно (делать хард ресет и перезапускать закачку). Нужно добавить нотифаер в TTileStorageOfMapType и расширить интерфейс до ITileStorageChangeble. Фактически, сейчас это хранилище изменяемое, а не простое ITileStorage, но оно никого не уведомляет о своих изменениях и шифруется под статический сторедж. По поводу нотифаера о смене версии и url нужно смотреть дополнительно, где их там лучше сделать. | ||||||||||||
Tags | No tags attached. | ||||||||||||
Attached Files | |||||||||||||
Relationships | |||||||||||
|
Notes | |
(0013740) vdemidov (manager) 06-02-2014 12:49 |
Может не стоит вывешивать ITileStorageChangeble наружу, а просто подписываться на изменения в тайлохранилище, но перезапускать загрузку только если это обновление всего тайлохранилища, а не конкретного тайла - там есть способ их различать. |
(0013741) zed (manager) 06-02-2014 13:16 |
> а просто подписываться на изменения в тайлохранилище Ты про какой конкретно метод и где? |
(0013742) vdemidov (manager) 06-02-2014 13:25 |
у тайлохранилища есть нотифаер, который уведомляет о всех изменениях в том числе и о полном обновлении. |
(0013743) zed (manager) 06-02-2014 13:45 |
Ты про INotifierTilePyramidUpdate? По крайней мере других нотифаеров там нету. И на что там подписываться, чтобы словить момент переключения типа хранилища с тайлового на Беркли (к примеру)? |
(0013744) vdemidov (manager) 06-02-2014 13:50 |
Да. Просто на AddListener и ловить событие с nil сообщением, а все остальные игнорировать. |
(0013745) zed (manager) 06-02-2014 14:18 |
Во-первых, это очень неочевидный способ - поди-ка догадайся сходу, что нужно ловить nil у тайлового нотифаера. Т.е. это можно рассматривать как недокументированную возможность (причём, теоретическую - см. далее). А во-вторых, при смене хранилища не прилетает вообще никаких сообщений. Сообщения прилетают только при движении карты (какие-то ITileKey). |
(0013746) zed (manager) 06-02-2014 14:25 |
И насколько я понял по исходникам, чтобы прилетел nil, должен дёргаться метод TileFullUpdateNotify, который никогда и никем на самом деле не дёргается. Плюс, есть косяк из-за которого может внезапно прилететь nil не там где надо. |
(0013747) vdemidov (manager) 06-02-2014 14:25 |
Мда. Похоже я это только планировал сделать. Ну тогда вперед. Возможно так действительно будет лучше. |
(0013748) zed (manager) 06-02-2014 14:30 |
Ок, а что по поводу версии и url (aka DefUrlBase)? |
(0013749) vdemidov (manager) 06-02-2014 14:35 |
Ну там же есть конфиг. Добавь подписку на его изменения да и ладно. |
(0013750) zed (manager) 06-02-2014 17:35 |
Подписался на изменения VersionConfig и качалка стала реагировать, а вот "отображалка" тупит. Видно как счётчик загруженных тайлов крутится и тайлы загружаются, но на экране изменения не отображаются... Кстати, по этой же подписке прилетает и изменение типа хранилища. Короче, глючит со всех сторон :( |
(0013751) vdemidov (manager) 06-02-2014 18:21 |
Пожалуйста не трогай ничего связанного с версиями,а то мне сложно мержить будет то что я уже наковырял. |
(0013754) vdemidov (manager) 07-02-2014 06:28 |
>Видно как счётчик загруженных тайлов крутится и тайлы загружаются, но на экране изменения не отображаются... Так и должно быть. Все дело именно в INotifierTilePyramidUpdate который при смене тайлохранилища не уведомляет ничего подписчикам потому что у нового создается новый экземпляр. Я вспомнил что это не доделал. Если сделаешь ITileStorageChangeble и в нужных местах поцепишь на него листенеры то эта проблема решиться. >Кстати, по этой же подписке прилетает и изменение типа хранилища. Это временно. После переделки версий и добавления в них хэшей перестанет. |
(0013757) zed (manager) 08-02-2014 14:35 |
> Если сделаешь ITileStorageChangeble Как его лучше делать? |
(0013758) vdemidov (manager) 09-02-2014 16:55 |
Если б я знал как лучше... |
(0013858) vdemidov (manager) 24-02-2014 16:13 |
В общем нужно решать, или делать прокси для INotifierTilePyramidUpdate и возвращать его из TTileStorageOfMapType. Или делать ITileStorageChangeble и при его изменении все заинтересованные должны будут переподписываться. У этого подхода есть преимущество - пропадает один захват примитива синхронизации при каждой операции с тайлохранилищем, но появляется риск, что старый экземпляр объекта-тайлохранилища будет жить пока не закончится фоновая операция, а для операций склейки/экспорта это может быть весьма долго. Второй вариант мне нравится больше, так что скорее всего программе предстоит еще одна массовая правка. |
(0016456) vdemidov (manager) 18-09-2015 13:58 |
Кстати, TTileStorageOfMapType уже довольно давно уведомляет о полном изменении тайлохранилища и можно было бы на это подписываться. И как я понимаю нужно еще за настройками генерации урлов для карты следить. |
Users who viewed this issue | |
User List | Anonymous (3548x), vdemidov (5x), ygorigor (1x), Papazol (1x), Garl (1x), gma (1x), zed (1x) |
Total Views | 3558 |
Last View | 21-11-2024 12:45 |
Issue History | |||
Date Modified | Username | Field | Change |
06-02-2014 08:23 | zed | New Issue | |
06-02-2014 12:49 | vdemidov | Note Added: 0013740 | |
06-02-2014 13:16 | zed | Note Added: 0013741 | |
06-02-2014 13:25 | vdemidov | Note Added: 0013742 | |
06-02-2014 13:45 | zed | Note Added: 0013743 | |
06-02-2014 13:50 | vdemidov | Note Added: 0013744 | |
06-02-2014 14:18 | zed | Note Added: 0013745 | |
06-02-2014 14:25 | zed | Note Added: 0013746 | |
06-02-2014 14:25 | vdemidov | Note Added: 0013747 | |
06-02-2014 14:30 | zed | Note Added: 0013748 | |
06-02-2014 14:35 | vdemidov | Note Added: 0013749 | |
06-02-2014 17:35 | zed | Note Added: 0013750 | |
06-02-2014 18:21 | vdemidov | Note Added: 0013751 | |
07-02-2014 06:28 | vdemidov | Note Added: 0013754 | |
08-02-2014 14:33 | zed | Status | new => confirmed |
08-02-2014 14:33 | zed | Target Version | => 140303 |
08-02-2014 14:35 | zed | Note Added: 0013757 | |
09-02-2014 16:55 | vdemidov | Note Added: 0013758 | |
17-02-2014 10:49 | vdemidov | Relationship added | child of 0001255 |
24-02-2014 16:13 | vdemidov | Note Added: 0013858 | |
03-03-2014 08:47 | vdemidov | Target Version | 140303 => 140404 |
19-03-2014 08:03 | vdemidov | Target Version | 140404 => 141111 |
22-03-2014 11:15 | zed | Relationship added | related to 0002387 |
26-03-2014 04:19 | Djon 1 | File Added: 100k--m53-003.gif | |
26-03-2014 08:21 | zed | File Deleted: 100k--m53-003.gif | |
23-10-2014 09:04 | vdemidov | Target Version | 141111 => 150915 |
21-01-2015 10:39 | vdemidov | Target Version | 150915 => 151010 |
25-01-2015 20:07 | vdemidov | Target Version | 151010 => 150915 |
23-02-2015 20:27 | vdemidov | Target Version | 150915 => 151010 |
18-09-2015 13:58 | vdemidov | Note Added: 0016456 | |
10-10-2015 15:33 | vdemidov | Target Version | 151010 => 151111 |
06-11-2015 08:20 | vdemidov | Target Version | 151111 => 191221 |
21-12-2019 09:14 | zed | Target Version | 191221 => 211230 |
30-12-2021 08:59 | zed | Target Version | 211230 => 26xxxx |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |