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