putData
클래스: 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
로 반환하고, 이 메시지로부터 추가 데이터를 수신하기를 원하는지 나타내는 true/false를 stop
으로 반환해야 합니다.
MATLAB이 빈 data
인수로 putData
를 호출한다는 것은 메시지 또는 multipart 메시지의 메시지 파트가 종료되었음을 의미합니다.
사용자가 이 메서드를 구현하는 소비자 서브클래스를 구현한 경우, putData
메서드는 슈퍼클래스 putData
를 호출하여 슈퍼클래스가 구현한 변환이나 처리를 활용할 수 있습니다.
MATLAB은 data
버퍼의 크기를 start
메서드가 반환한 bufsize
값으로 제한하거나, bufsize
가 []
인 경우 내부 버퍼 크기로 제한합니다. 서버가 청크로 인코딩된 메시지를 전송하는 경우, 기존에 수행한 putData
호출로는 둘 이상의 청크를 수신할 수 없습니다. 따라서 소비자는 bufsize
가 청크 크기보다 훨씬 큰 경우에도 천천히 도착하는 청크를 제때에 수신할 수 있습니다.
이 기본 클래스의 putData()
의 디폴트 동작은 다음과 같습니다.
서브클래스 소비자는 변환되었거나 변환되었을 가능성이 있는 콘텐츠를 단계적으로 또는 한꺼번에 Response.Body.Data
에 직접 저장할 수도 있고, 다른 방식으로 삭제할 수도 있습니다. 서브클래스 소비자는 데이터를 저장하기 위해 이 putData
메서드를 호출할 필요가 없습니다. 콘텐츠를 Response.Body.Data
에 단계적으로 저장하고자 하는 소비자는 이 메서드를 호출하면 됩니다. 이 메서드는 AppendFcn
을 사용하여 data
를 Response.Body.Data
에 추가하는데, 용량을 단계적으로 할당하여 효율적인 추가가 이루어지도록 시도합니다. 저장된 데이터의 실제 길이는 CurrentLength
속성에 저장됩니다. 이 값은 Response.Body.Data
의 실제 길이보다 작을 수 있습니다. 전송이 완료되면(예를 들어 putData(consumer,[])
또는 putData(consumer,uint8.empty)
가 호출되면) Response.Body.Data
는 CurrentLength
로 잘립니다. 사용자는 자체 AppendFcn
을 정의하여 다른 추가 메서드를 구현할 수 있습니다.
기본적으로 이 메서드는 항상 numel(data)
와 동일한 size
와 false
와 동일한 stop
을 반환합니다.
데이터를 저장하기 위해 이 메서드를 사용하고자 하는 사용자가 저장할 데이터의 최대 길이를 알고 있는 경우에는 이 메서드를 최초로 호출하기 전에 먼저 디폴트 값(예: 0)으로 채워진 원하는 크기의 벡터로 Response.Body.Data
를 설정해야 합니다. 이 메서드는 데이터 영역의 시작 부분에서 데이터를 저장하기 시작한 다음 메시지의 끝부분에서 데이터를 데이터의 길이에 따라 잘라 CurrentLength
에 저장된 데이터의 길이를 유지합니다.
데이터를 단계적으로 저장하기 위해 이 기본 클래스에서 이 메서드를 호출하는 소비자는 구조체와 셀형 배열을 포함하여 horzcat
또는 vertcat
을 지원하는 모든 유형의 data
를 제공할 수 있습니다. 셀형 배열을 제공하는 경우, 기존 데이터는 셀형 배열이 아닌 경우 셀형 배열로 변환되며, 셀형 배열의 요소는 CurrentLength
+1에서 시작하는 기존 셀형 배열의 선형 인덱스에 삽입됩니다.
데이터를 저장하기 위해 ContentConsumer
에서 이 메서드를 호출하는 경우, Response.Body.Data
나 CurrentLength
를 직접 수정하는 대신 이 메서드가 해당 속성을 관리하도록 해야 합니다.
슈퍼클래스에서 이 메서드를 호출하는 ContentConsumers
는 슈퍼클래스가 예외를 발생시키는 경우 창 닫기, 임시 파일 삭제하기와 같은 정리 작업을 수행할 준비가 되어 있어야 합니다.
입력 인수
출력 인수
특성
Access | public |
버전 내역
R2018a에 개발됨