Anonymous | Login | Signup for a new account | 22-11-24 03:00 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 | ||||
0003447 | SAS.Планета | [All Projects] Баг | public | 23-05-2019 19:42 | 27-05-2019 13:52 | ||||
Reporter | zed | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | 181221 | ||||||||
Target Version | 190707 | Fixed in Version | 190707 | ||||||
Summary | 0003447: TStorageStateInternal игнорирует опцию AllowScan | ||||||||
Description | При создании хранилища с единственной целью - сканирование тайлов, получаем невалидный стейт, у которого нету доступа ни к чему. Воспроизводится на тайловом хранилище, с ForceAbilities созданными таким образом: TTileStorageAbilities.Create([tsatScan]). | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Notes | |
(0018709) zed (manager) 23-05-2019 20:03 |
И ещё мне кажется очень странным использование 3-х состояний TAccesState. Какой вообще смысл в использовании asUnknown? По-моему, тут надо упростить, перейти на Boolean и по дефолту разрешать доступ ко всему, а уже ForceAbilities будут решать, что конкретно оставить. Так же есть сомнение о необходимости свойств WriteAccess и IsReadOnly (у ITileStorageAbilities) - это вспомогательные свойства, которые могут быть получены из имеющихся. Их наличие усложняет код и по хорошему их надо либо убрать, либо заменить на одно свойство типа enum (возможно, даже только для чтения), со значениями (ReadOnly, WriteOnly, ReadWrite). |
(0018710) vdemidov (manager) 24-05-2019 01:55 |
Б.я. Пол часа писал, а оно ничго не сохранило, ибо долго писал. |
(0018711) vdemidov (manager) 24-05-2019 04:59 edited on: 24-05-2019 05:35 |
Пишу еще раз > При создании хранилища с единственной целью - сканирование тайлов, получаем невалидный стейт, у которого нету доступа ни к чему. А к чему там должен быть доступ. Вроде бы там и должен быть доступ только к скану. Но может быть и ошибка где-то. Подразумевается, что это открытие только на один или несколько проходов сканирования всех тайлов, без возможности получения доступа к произвольному тайлу и без любых прав на изменение. Пример - проход по tar архиву. >И ещё мне кажется очень странным использование 3-х состояний TAccesState. Какой вообще смысл в использовании asUnknown? Смысл в том, что бы если запущена закачка, а доступа на запись в тайлохранилище нет, то что бы она могла понять, что запись не доступна и не качала тайлы без записи. И что бы инициализация была ленивая, тоесть оно не пытается узнать есть ли возможность записи пока не получит первую команду на запись. Но возможно, это действительно стоит выбросить и сделать только ленивую инициализацию всего тайлохранилища, а уже в ней сразу проверять и чтение, и запись. >Так же есть сомнение о необходимости свойств WriteAccess и IsReadOnly (у ITileStorageAbilities) Возможно. Скорее всего перемудрил. Поясню зачем это нужно. В первую очередь это нужно для типа тайлохранилища, что бы можно было указать какие типы операций оно поволяет. Причем все они практически ортогональны. И где ты наше WriteAccess у ITileStorageAbilities? Там есть: AllowScan - проход по всем тайлам в тайлохранилище (например импорт tar архива) AllowRead - произвольный доступ к тайлу - не обязательно подразумевает наличие AllowScan, так как это может быть какая-то база с АПИ позволяющим только одиночные запросы к тайлам AllowAdd - возможность добавлять тайлы - может быть без любых других возможностей, например запись в tar - исключительно потоковый экспорт. AllowDelete - возможность удялить тайлы - можно представить тайлохранилище даже просто в файловой системе, где есть право добавлять файлы, но нет права удалять. ХЗ надо ли оно такое. AllowReplace - можно ли заменять тайлы. Кажется что можно заменить парой Add и Delete, но это только если обе возможности есть. Могу представить как случаи когда можно удалять и заменять существующие тайлы, но нельзя добавлять новые, так и случаи, когда можно добавлять новые и заменять существующие, но нельзя удалять (хотья, конечно это сомнительно) IsReadOnly - добавлена, что бы можно было в параметрах тайлохранилища одной настройкой полностью отключить возможность изменения, но, думаю, можно было бы оставить ее чисто виртуальной на время чтения/записи настроек, а в рантайме хранить как отключение всех возможностей изменения. |
(0018713) zed (manager) 24-05-2019 06:33 |
Должен быть доступ к скану, но по факту его нету. И нет даже свойства ScanAccess, вместо которого от безысходности проверяется ReadAccess. WriteAccess я в стейте нашёл. Просто оно такой же придаток, как и IsReadOnly. |
(0018714) vdemidov (manager) 24-05-2019 06:42 |
> Должен быть доступ к скану, но по факту его нету. И нет даже свойства ScanAccess, вместо которого от безысходности проверяется ReadAccess. Значит нужно допиливать что-то. Когда это хозяйство писалось, тайлохранилищ только со сканом еще не было. Ты их вроде только недавно добавил. Вот и не учел я что-то. > WriteAccess я в стейте нашёл. Просто оно такой же придаток, как и IsReadOnly. Возможно в стейте стоит действительно сделать энам с несколькими состояниями. Смотри сам. Свои соображения я изложил. По хорошему, было бы неплохо в возможности тайлохранилища еще поддержку tne указывать, что бы можно было включать/отключать не на всю программу, а и для конкретной карты. И при операциях перемещения-копирования это учитывать и явно настраивать. |
(0018715) zed (manager) 24-05-2019 18:59 |
А самое интересное, что этот WriteAccess повсеместно ошибочно используется там, где надо проверять AddAccess. Видимо, название оказалось неудачным. Займусь, наверное, небольшим рефакторингом этого класса на следующей неделе. |
Users who viewed this issue | |
User List | Anonymous (1585x), ingener (1x), zed (12x), vdemidov (14x) |
Total Views | 1612 |
Last View | 22-11-2024 03:00 |
Issue History | |||
Date Modified | Username | Field | Change |
23-05-2019 19:42 | zed | New Issue | |
23-05-2019 20:03 | zed | Note Added: 0018709 | |
24-05-2019 01:55 | vdemidov | Note Added: 0018710 | |
24-05-2019 04:59 | vdemidov | Note Added: 0018711 | |
24-05-2019 05:35 | vdemidov | Note Edited: 0018711 | View Revisions |
24-05-2019 06:33 | zed | Note Added: 0018713 | |
24-05-2019 06:42 | vdemidov | Note Added: 0018714 | |
24-05-2019 18:59 | zed | Note Added: 0018715 | |
24-05-2019 19:02 | zed | Assigned To | => zed |
24-05-2019 19:02 | zed | Status | new => assigned |
24-05-2019 19:05 | zed | Target Version | => 190707 |
27-05-2019 13:51 | zed | Status | assigned => resolved |
27-05-2019 13:51 | zed | Fixed in Version | => 190707 |
27-05-2019 13:51 | zed | Resolution | open => fixed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |