Класс: 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