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
が呼び出されるときは、メッセージまたはメッセージ パート (マルチパート メッセージの場合) が終了したことを意味します。
このメソッドを実装するコンシューマーのサブクラスを作成する場合、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
を返します。
このメソッドを使用してデータを格納する予定であり、格納されるデータの最大長がわかっている場合は、このメソッドをはじめて呼び出す前に、Response.Body.Data
を既定の値 (たとえば 0) で満たされた目的のサイズのベクトルに設定する必要があります。このメソッドは、データ領域の先頭にデータを格納することを開始します。その後、メッセージの最後でデータの長さに切り捨て、CurrentLength
に格納されるデータの長さを維持します。
この基底クラスでこのメソッドを呼び出してデータを段階的に格納するコンシューマーは、構造体や cell 配列を含む、horzcat
または vertcat
をサポートする任意の型の data
を提供することができます。cell 配列を提供する場合、まだ変換されていない場合は既存のデータが cell 配列に変換され、cell 配列の要素は CurrentLength
+1 で始まる線形インデックスの既存の cell 配列に挿入されます。
ContentConsumer
でこのメソッドを呼び出してデータを格納する場合、直接変更するのではなく、このメソッドによって Response.Body.Data
または CurrentLength
を管理する必要があります。
スーパークラスでこのメソッドを呼び出す ContentConsumers
は、ウィンドウを閉じたり、一時ファイルを削除するなど、スーパークラスが例外をスローした場合のクリーンアップの実施を準備する必要があります。
入力引数
出力引数
属性
Access | public |
バージョン履歴
R2018a で導入