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 で導入