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

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
Строка 13: Строка 13:
   std::uint8_t buf[WINDOW_SIZE];
   std::uint8_t buf[WINDOW_SIZE];
   std::uint64_t cbRead = 1;
   std::uint64_t cbRead = 1;
   while(cbRead != 0)
   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
}