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/ |