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