IInMemoryDataStorage

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску

Интерфейс для чтения и записи данных в накопитель, связанный с буфером в памяти.

Методы
МетодОписание
GetPtrВозвращает адрес управляемого накопителем буфера данных в памяти.
ReleaseBufferOwnershipВозвращает управляемый накопителем буфер данных в памяти с передачей владения буфером клиенту.
Наследует открыто
КлассОписание
Интерфейс для чтения и записи в накопитель последовательно расположенных и однородных данных.

Данные накопителя с интерфейсом IInMemoryDataStorage физически располагаются в памяти машины и могут быть адресованы прямо с использованием указателей C и ссылок C++. Такой накопитель предполагает произвольный доступ к элементам данных, размер и семантика которых определяются реализацией. Следовательно, налагается требование к однородности элементов в памяти, которыми, как минимум, могут быть байты.

Для адресации элементов используются унаследованные методы IContiguousDataStorage, а также пара собственных методов - GetPtr, позволяющий получить непосредственный адрес связанного с накопителем буфера в виде указателя C и размер этого буфера в байтах, а также метод ReleaseBufferOwnership, который позволяет получить тот же буфер данных, а также передать владение этим буфером клиенту.

Сложность доступа к элементам буфера постоянна.

Гарантируется, что любая реализация интерфейса IInMemoryDataStorage будет также поддерживать интерфейсы IArbitrarilyAccessedDataStorage и IConsequentDataStorage, а также родственные им интерфейсы только для чтения или только для записи данных. Для получения указателей на эти интерфейсы необходимо использовать метод IDataStorage::RepresentAs, который наследуется интерфейсом IInMemoryDataStorage.

Отношения интерфейса IInMemoryDataStorage. Сплошными стрелками показано наследование. Пунктиром с подписью "r" показана поддерживаемость реализацией и приводимость с помощью IDataStorage::RepresentAs.

При использовании интерфейса IArbitrarilyAccessedDataStorage ключом будет являться беззнаковый целочисленный восьмибайтовый индекс требуемого блока данных аналогично тому, как это определено для наследуемых методов IContiguousDataStorage::ReadAt и IContiguousDataStorage::WriteTo. Ключ является восьмибайтовым целым в том числе на платформах, на которых размер указателя не равен восьми байтам.

Реализация накопителя, которая поддерживает интерфейс IInMemoryDataStorage, также поддерживает интерфейс IInMemoryDataStorageInput, который доступен через использование метода IDataStorage::RepresentAs, вызываемого над this.

См. также
IInMemoryDataStorageInputИнтерфейс для чтения данных из накопителя, связанного с буфером в памяти.
InMemoryDataStorageRefСсылочный адаптер, определенный над интерфейсом IInMemoryDataStorage.
InMemoryDataStorageOwnАдаптер с владением реализацией интерфейса IInMemoryDataStorage.