IInputByteStream: различия между версиями
Перейти к навигации
Перейти к поиску
Строка 13: | Строка 13: | ||
std::uint8_t buf[WINDOW_SIZE]; | std::uint8_t buf[WINDOW_SIZE]; | ||
std::uint64_t cbRead = 1; | std::uint64_t cbRead = 1; | ||
do | |||
{ | { | ||
cbRead = WINDOW_SIZE; | cbRead = WINDOW_SIZE; | ||
Строка 22: | Строка 22: | ||
if (nError < 0) | if (nError < 0) | ||
return false; //error | return false; //error | ||
} | } while (cbRead != 0); | ||
return true; | return true; //done | ||
} | } | ||
</source> | </source> |
Версия 17:52, 21 марта 2017
Интерфейс реализации входного потока байт.
Методы, наследуемые от InterfaceBase.
Release | Закрывает текущий экземпляр, реализующий интерфейс. |
Методы, наследуемые от IStream.
IsInterfaceAvailable | Проверяет поддержку интерфейса, заданного идентификатором, текущей реализацией. |
RepresentAs | Создает представление реализации в виде интерфейса, заданного идентификатором. |
AddRef | Инкрементирует счетчик ссылок на реализацию потока. |
Методы, наследуемые от IInputStream.
Read | Считывает из потока один элемент. |
Собственные методы.
ReadArray | Считывает из потока массив байт. |
Пример использования.
Ниже приведен пример функции, копирующей данные из входного потока в выходной.
bool copy(IInputByteStream* pFrom, IOutputByteStream* pTo)
{
const std::size_t WINDOW_SIZE = 0x1000;
std::uint8_t buf[WINDOW_SIZE];
std::uint64_t cbRead = 1;
do
{
cbRead = WINDOW_SIZE;
std::int32_t nError = pFrom->Read(buf, std::addressof(cbRead));
if (nError < 0)
return false; //error
nError = pTo->Write(buf, cbRead);
if (nError < 0)
return false; //error
} while (cbRead != 0);
return true; //done
}