IContiguousDataStorage: различия между версиями

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
(Новая страница: «{{IContiguousDataStorage_brief}} {{IContiguousDataStorage methods|Собственные методы}}»)
 
Строка 1: Строка 1:
{{IContiguousDataStorage_brief}}
{{interface|IContiguousDataStorage}}
Данные накопителя данных с интерфейсом [[IContiguousDataStorage]] однородны и логически расположены последовательно. Разрешен произвольный доступ к данным с низкой (но определенной конкретно только для реализаций интерфейса) вычислительной сложностью. Данные адресуются целочисленными индексами.


{{IContiguousDataStorage methods|Собственные методы}}
Гарантируется, что любая реализация интерфейса [[IContiguousDataStorage]] будет также поддерживать интерфейсы [[IArbitrarilyAccessedDataStorage]] и [[IConsequentDataStorage]], а также родственные им интерфейсы только для чтения или только для записи данных. Для получения указателей на эти интерфейсы необходимо использовать метод [[IDataStorage::RepresentAs]], который наследуется интерфейсом  [[IContiguousDataStorage]].
 
При использовании интерфейса [[IArbitrarilyAccessedDataStorage]] ключом будет являться беззнаковый целочисленный восьмибайтовый индекс требуемого блока данных аналогично тому, как это определено для методов [[IContiguousDataStorage::ReadAt|ReadAt]] и [[IContiguousDataStorage::WriteTo|WriteTo]].
 
При использовании интерфейса [[IConsequentDataStorage]] создаваемые методами чтения и записи потоки данных будут иметь независимые указатели на ассоциированные с этими потоками блоки данных. Данное уточнение снимает соответствующие ограничения интерфейса [[IConsequentDataStorage]]. Однако безопасность одновременного обращения к накопителю данных из множества потоков выполнения может гарантироваться только реализацией интерфейса [[IContiguousDataStorage]].
 
Реализация накопителя, которая поддерживает интерфейс [[IContiguousDataStorage]] также поддерживает интерфейсы [[IContiguousDataStorageInput]] и [[IContiguousDataStorageOutput]], которые доступны через использование метода [[IDataStorage::RepresentAs]], вызываемого над {{cpp_this}}.
{{sa_list_begin}}
{{sa_list_add|IContiguousDataStorageInput}}
{{sa_list_add|IContiguousDataStorageOutput}}
{{sa_list_add|ContiguousDataStorageRef}}
{{sa_list_add|ContiguousDataStorageOwn}}
{{sa_list_end}}

Версия 17:56, 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.