Класс: matlab.net.http.io.ContentConsumer
Пакет: matlab.net.http.io
Обработка или сохранение следующего буфера данных для ContentConsumer
[size,stop] = putData(consumer,data)
[ обеспечивает буфер size,stop] = putData(consumer,data)data чтение с сервера на consumer.
MATLAB® вызывает putData. Пользователи подкласса могут переопределить этот метод, чтобы получить потоковые данные. Ваш потребитель должен вернуть длину данных, которые он фактически обработал в sizeи истинное/ложное указание в stop чтобы указать, хочет ли он получить дополнительные данные из этого сообщения.
Когда MATLAB вызывает putData с пустым data аргумент означает, что часть сообщения или сообщения в случае многочастного сообщения завершена.
Если вы создаете подкласс потребителя, который реализует этот метод, ваше putData метод может вызвать его суперкласс putData использовать преимущества любых преобразований или обработки, которые реализует суперкласс.
MATLAB ограничивает размер data буферы к bufsize значение, возвращенное start метод или внутренний buffer size, если bufsize является []. Кроме того, если сервер отправляет сообщение с кодировкой порций, то данный вызов putData никогда не предоставляет больше одного фрагменты. Это позволяет потребителю получать медленно прибывающие фрагменты своевременно, даже если bufsize намного больше, чем размер фрагмента.
Поведение по умолчанию putData() в этом базовом классе:
Потребители подкласса имеют опцию хранения своего возможно преобразованного содержимого непосредственно в Response.Body.Data, либо пошагово, либо все сразу, или утилизировать его каким-либо другим способом. Потребителю подкласса не нужно вызывать эту putData метод для хранения данных. Для удобства, потребители, которые хотят хранить содержимое постепенно в Response.Body.Data можно вызвать этот метод для этого. Этот метод добавляет data на Response.Body.Data использование AppendFcn, попытка сделать это эффективно путем постепенного распределения емкости. Фактическая длина хранимых данных сохраняется в CurrentLength свойство, которое может быть меньше фактической длины Response.Body.Data. В конце передачи (для примера, когда putData(consumer,[]) или putData(consumer,uint8.empty) вызывается, Response.Body.Data обрезается до CurrentLength. Вы можете задать свою собственную AppendFcn для реализации альтернативного метода добавления.
По умолчанию этот метод всегда возвращает size равным numel(data) и stop равно false.
Если вы намерены использовать этот метод для хранения данных и знаете максимальную длину данных, которые будут храниться, то вы должны задать Response.Body.Data в вектор необходимого размера, заполненный значениями по умолчанию (для примера, нули), перед первым вызовом этого метода. Этот метод начинает хранить данные в начале области данных, а затем обрезает их до длины данных в конце сообщения, сохраняя длину данных, хранящихся в CurrentLength.
Потребители, которые вызывают этот метод в этом базовом классе для инкрементного хранения данных, могут предоставить data любого типа, поддерживающего horzcat или vertcat, включая структуры и массивы ячеек. Если вы предоставляете массив ячеек, существующие Данные преобразуются в массив ячеек, если его еще нет, и элементы массива ячеек вставляются в существующий массив ячеек с линейным индексом, начинающимся с CurrentLength+1.
Если вы вызываете этот метод в ContentConsumer чтобы хранить данные, тогда вы должны позволить этому методу управлять Response.Body.Data или CurrentLength и не изменять их непосредственно.
ContentConsumers этот вызов этого метода в суперклассе должен быть подготовлен для выполнения любой очистки, такой как закрытие окон или удаление временных файлов, если суперкласс выдает исключение.
Access | public |
AppendFcn | CurrentLength | matlab.net.http.HTTPException | matlab.net.http.HTTPOptions | matlab.net.http.RequestMessage | matlab.net.http.ResponseMessage | MultipartConsumer | Ответ | start