OberonCore
https://forum.oberoncore.ru/

Реализации базовых модулей
https://forum.oberoncore.ru/viewtopic.php?f=23&t=217
Страница 1 из 1

Автор:  Иван Горячев [ Пятница, 26 Май, 2006 03:38 ]
Заголовок сообщения:  Реализации базовых модулей

Вопрос возник на примере модуля Files, но скорее всего это относится и к другим базовым модулям Блэкбокса.

Итак. Допустим, я создал реализацию Files для прозрачной работы с zip-архивами. Т.е. на архив можно получить Files.Locator, и на каталоги внутри архива тоже, ну понятно в общем. Но встаёт проблема - как совместить мою реализацию и с HostFiles, и с HostPackedFiles? И если я потом создам аналогичный модуль, например, для rar-архивов, как совмещёть их все?

Иными словами: как в системе Блэкбокса совмещать несколько различных реализаций одного и того же базового модуля?

Автор:  Илья Ермаков [ Пятница, 26 Май, 2006 11:23 ]
Заголовок сообщения: 

Ну, при инсталляции очередного драйвера он запоминает предыдущую директорию и потом перенаправляет при необходимости вызов на нее. Образуется такая цепочка обработчиков.

Есть проблема касательно того, что какие-то клиенты могут использовать приведение Locator(HostFiles.Locator). Но, во-первых, разработчики должны были понимать,что используют низкоуровневые средства. Во-вторых, открытие типа реализации, как это сделано в HostFiles - редкий и не очень правильный случай, и в других местах Framework'а я его не видел. Во-третьих, я бы просто наследовал свой локатор от HostFiles.Locator, поскольку локатор никакой системной функциональности в себе не несет, это просто дескриптор, обертка для строки пути. loc.This() на несуществующую директории вполне допустим. Проверка и обработка пути все равно выполняется в процедурах директории, при передаче такого локатора.

Автор:  Иван Горячев [ Пятница, 26 Май, 2006 11:34 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Ну, при инсталляции очередного драйвера он запоминает предыдущую директорию и потом перенаправляет при необходимости вызов на нее. Образуется такая цепочка обработчиков.


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

Автор:  Илья Ермаков [ Пятница, 26 Май, 2006 12:00 ]
Заголовок сообщения: 

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/