IInputByteStream: различия между версиями
Перейти к навигации
Перейти к поиску
Строка 16: | Строка 16: | ||
{ | { | ||
cbRead = WINDOW_SIZE; | cbRead = WINDOW_SIZE; | ||
std::int32_t nError = pFrom-> | std::int32_t nError = pFrom->ReadArray(buf, std::addressof(cbRead)); | ||
if (nError < 0) | if (nError < 0) | ||
return false; //error | return false; //error | ||
nError = pTo-> | nError = pTo->WriteArray(buf, cbRead); | ||
if (nError < 0) | if (nError < 0) | ||
return false; //error | return false; //error |
Версия 20:55, 17 апреля 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->ReadArray(buf, std::addressof(cbRead));
if (nError < 0)
return false; //error
nError = pTo->WriteArray(buf, cbRead);
if (nError < 0)
return false; //error
} while (cbRead != 0);
return true; //done
}