Класс: 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 | ContentConsumer.start
| CurrentLength | MultipartConsumer
| Ответ | matlab.net.http.HTTPException
| matlab.net.http.HTTPOptions
| matlab.net.http.RequestMessage
| matlab.net.http.ResponseMessage