IContiguousDataStorage: различия между версиями
Строка 3: | Строка 3: | ||
Гарантируется, что любая реализация интерфейса [[IContiguousDataStorage]] будет также поддерживать интерфейсы [[IArbitrarilyAccessedDataStorage]] и [[IConsequentDataStorage]], а также родственные им интерфейсы только для чтения или только для записи данных. Для получения указателей на эти интерфейсы необходимо использовать метод [[IDataStorage::RepresentAs]], который наследуется интерфейсом [[IContiguousDataStorage]]. | Гарантируется, что любая реализация интерфейса [[IContiguousDataStorage]] будет также поддерживать интерфейсы [[IArbitrarilyAccessedDataStorage]] и [[IConsequentDataStorage]], а также родственные им интерфейсы только для чтения или только для записи данных. Для получения указателей на эти интерфейсы необходимо использовать метод [[IDataStorage::RepresentAs]], который наследуется интерфейсом [[IContiguousDataStorage]]. | ||
[[Файл:IContiguousDataStorage-relations.png|800px|thumb|right|Отношения интерфейса [[IContiguousDataStorage]]. Сплошными стрелками показано наследование. Пунктиром с подписью "r" показана поддерживаемость реализацией и приводимость с помощью [[IDataStorage::RepresentAs]].]] | |||
При использовании интерфейса [[IArbitrarilyAccessedDataStorage]] ключом будет являться беззнаковый целочисленный восьмибайтовый индекс требуемого блока данных аналогично тому, как это определено для методов [[IContiguousDataStorage::ReadAt|ReadAt]] и [[IContiguousDataStorage::WriteTo|WriteTo]]. | При использовании интерфейса [[IArbitrarilyAccessedDataStorage]] ключом будет являться беззнаковый целочисленный восьмибайтовый индекс требуемого блока данных аналогично тому, как это определено для методов [[IContiguousDataStorage::ReadAt|ReadAt]] и [[IContiguousDataStorage::WriteTo|WriteTo]]. |
Версия 19:02, 15 августа 2019
Интерфейс для чтения и записи в накопитель последовательно расположенных и однородных данных.
Метод | Описание |
---|---|
Read | Создает поток чтения, ассоциированный с накопителем данных IContiguousDataStorage, в позиции, связанной с началом данных. |
ReadAt | Создает поток чтения, связанный с накопителем данных IContiguousDataStorage, в заданной параметрически позиции в накопителе. |
GetElementCount | Возвращает количество элементов данных в накопителе. |
GetByteSize | Возвращает байтовый размер данных в накопителе. |
GetMaxByteSize | Возвращает максимально допустимый байтовый размер данных в накопителе. |
Write | Создает поток записи, ассоциированный с накопителем данных IContiguousDataStorage, в позиции, связанной с началом буфера накопителя. |
WriteTo | Создает поток записи, связанный с накопителем данных IContiguousDataStorage, в заданной параметрически позиции в накопителе. |
EraseContent | Очищает содержимое буфера, связанного с накопителем this. |
DeleteBlock | Удаляет блок данных указанной длины, имеющийся в накопителе в заданной позиции. |
Класс | Описание |
---|---|
Базовый интерфейс накопителя данных. |
Данные накопителя данных с интерфейсом IContiguousDataStorage однородны и логически расположены последовательно. Разрешен произвольный доступ к данным с низкой (но определенной конкретно только для реализаций интерфейса) вычислительной сложностью. Данные адресуются целочисленными индексами.
Гарантируется, что любая реализация интерфейса IContiguousDataStorage будет также поддерживать интерфейсы IArbitrarilyAccessedDataStorage и IConsequentDataStorage, а также родственные им интерфейсы только для чтения или только для записи данных. Для получения указателей на эти интерфейсы необходимо использовать метод IDataStorage::RepresentAs, который наследуется интерфейсом IContiguousDataStorage.

При использовании интерфейса IArbitrarilyAccessedDataStorage ключом будет являться беззнаковый целочисленный восьмибайтовый индекс требуемого блока данных аналогично тому, как это определено для методов ReadAt и WriteTo.
При использовании интерфейса IConsequentDataStorage создаваемые методами чтения и записи потоки данных будут иметь независимые указатели на ассоциированные с этими потоками блоки данных. Данное уточнение снимает соответствующие ограничения интерфейса IConsequentDataStorage. Однако безопасность одновременного обращения к накопителю данных из множества потоков выполнения может гарантироваться только реализацией интерфейса IContiguousDataStorage.
Реализация накопителя, которая поддерживает интерфейс IContiguousDataStorage также поддерживает интерфейсы IContiguousDataStorageInput и IContiguousDataStorageOutput, которые доступны через использование метода IDataStorage::RepresentAs, вызываемого над this.
- См. также
IContiguousDataStorageInput Интерфейс для чтения из накопителя последовательно расположенных и однородных данных. IContiguousDataStorageOutput Интерфейс для чтения и записи в накопитель последовательно расположенных и однородных данных. ContiguousDataStorageRef Ссылочный адаптер, определенный над интерфейсом IContiguousDataStorage. ContiguousDataStorageOwn Владеющий адаптер, определенный над интерфейсом IContiguousDataStorage.