Storage
Класс Storage предоставляет интерфейс для доступа к DISS -- файловой системе Диптауна. Все методы класса -- статические. Предоставляются методы для монтирования оверлеев, открытия, создания, удаления и поиска файлов, а так же методы навигации по содержимому графа ФС.
Родители: нет (класс оболочка)
Методы:
mount
create
delete
open
find
search
changeDir
currentDir
mount
mount(адрес хранилища: string, адрес индекса: string, флаги: int)
Возвращает: MountPoint
Метод производит монтирование оверлея к ФС. Адрес хранилища -- это URL ресурса который необходимо подключить. Например, в случае подключения директории реальной ФС, будет запись вида fs:путь/к/хранилищу. Второй параметр содержит URL к индексу для данного хранилища. Если параметр не указан, индекс будет создан автоматически.
Флаги:
- MOUNT_READONLY -- хранилище монтируется в режиме "только чтение".
- MOUNT_USER -- файлы из данного оверлея будут видны только самому пользователю, примонтировавшему хранилище.
- MOUNT_GROUP -- файлы из данного оверлея будут видны группе пользователей, в которую входит данный пользователь.
- MOUNT_PROTECTED -- данный режим монтирования доступен только суперпользователю. При этом, файлы в этом хранилище не могут быть перекрыты обычными пользователями. Перекрыть файлы из защищенного хранилища можно только еще одним защищенным оверлеем.
Если не указан ни один из флагов, то оверлей монтируется так, что его файлы будут видны всем пользователям. Это доступно, естественно, только суперпользователю.
create
create(адрес: string, имя ноды: string, флаги открытия: int, флаги ноды: int, точка монтирования: MountPoint)
Возвращает: потомка Node
Метод создает ноду (файл) по указанному адресу. В качестве адреса передается DISS путь.
Флаги открытия:
- Те же, что указываются в методе open
Флаги ноды(класс Node):
- TYPE_DIRECTORY -- нода является директорией.
- TYPE_FILE -- обычный файл
- TYPE_DATA -- Специальный файл, содержащий vary данные прямо в индексе.
- TYPE_LINK -- в настоящий момент не реализовано
- TYPE_STREAM -- файл содержащий адрес потока. При открытии такого файла, открывается поток, по соответствующему адресу.
- TYPE_EVENT -- в настоящий момент не реализовано
- TYPE_MUTEX -- в настоящий момент не реализовано
- FLAG_READONLY -- файл доступен только для чтения
delete
delete(адрес: string, точка монтирования: MountPoint)
Метод удаляет ноду из дерева ФС. Если указана конкретная точка монтирования, то нода удаляется только с хранилища, соответствующего данной точке монтирования.
open
open(адрес: string, флаги: int, точка монтирования: MountPoint)
Возвращает: потомок Node
Метод осуществляет открытие ноды по указанному пути.
Флаги (имеют отношение к файлам с содержимым):
- OPEN_READ -- нода открывается для чтения
- OPEN_WRITE -- нода открывается для записи
- OPEN_TRUNCATE -- нода открывается для записи, притом что текущее содержимое файла обнуляется.
find
find(запрос: string, точка монтирования: MountPoint)
Возвращает: array<Node>
Метод используется для выборки данных из ФС. Возвращается массив, отвечающий заданным критериям.
Примеры запросов:
/home/user/music/[artist="EndZone"]
/etc/[%name=~/\.conf$/]
[type=image/jpeg]
[%name=~'\.jpg$',type=image/jpeg]
[%name=~!\.jpg$!|%name=~!\.png$,type=~'^image']
Запрос состоит из частей пути (в обычном понимании; например /home/user/music) а так же тэгов, состоящих из квадратных скобок, в которых заключаются термины поиска. Если элементы пути не указаны, поиск будет вестись в текущей директории.
search
open(правила поиска: string, точка монтирования: MountPoint)
Возвращает: array<Node>
Метод похож по смыслу на метод find, однако критерий поиска задается единственным оператором тэгом [...]; поиск ведется во всем хранилище.
changeDir
changeDir(новая директория: string)
Метод устанавливает текущую директорию.
currentDir
Возвращает: string
Метод возвращает текущую директорию.