ストリームから非同期に読み込みを行います。
プログラミング注意事項
n: 読み込む最大量を示す int64 キーワード。既定値は max-int64 で、ストリームの最後まで読み込みます。
partial?:
n 個のアイテムが読み込まれる前、またはストリームの最後に達する前に
AsyncStreamReadEvent を送信するかどうかを示す
bool キーワード。つまり、読み込まれるチャンクごとにイベントを送信するかどうか、
append? が
true の場合にチャンクごとにファイル関連イベントを送信するかどうかどうかを指定することにもなります。既定値は
false です。
append?:
AsyncStreamReadEvent のいずれかが新規のデータだけを受け取るか、それまでに読み込まれた全データの継続バッファを受け取るかを示す
bool キーワード。さらに、
out が指定されている場合は、これに追加するかまたはクリアしてから使用するかを示します。既定値は
false です。
戻り値
注意事項
EventHandler は引数で指定された順序とは逆の順番で呼び出され、これを使用して、読み込みが終了したときに (イベントの
exception フィールドが非 null になるか、または
done? フラグが true になった場合)
Stream を閉じることができます。
AsyncStreamReadEvent のデータは
{Array-of t} です。
最大 n 個のオブジェクトを self から取得し、直接 os に書き込みます。
os: オブジェクトが書き込まれる OutputStream。
n: 書き込まれるオブジェクトの個数。既定値は max-int64 です。転送されるオブジェクトの数が n より少ない場合、存在するオブジェクトがすべてコピーされます。
戻り値
self から os に実際に転送されたオブジェクトの数を返します。戻り値が 0 の場合はストリームが EOF に到達していることを意味し、os には何も書き込まれていません。
説明
このメソッドは、n 個の要素が転送されるか、ストリームが EOF に到達するまで何も返さずに実行を続けます。
注意事項
self または os のどちらかが開いていない場合はエラーになります。
n < 0 の場合もエラーになります。
self から t タイプのオブジェクトを n まで読み取ります。
out: オブジェクトを受け取る Array。null (既定値) の場合は、新しい Array が割り当てられて返されます。
start: オブジェクトはこのパラメータが指定するスロットから out に書き込まれます。
n: 読み取られるオブジェクトの最大数。
allow-short-read?: この呼び出しが n 未満の数を返すか、データのストリーム全体を返すかを示します。既定は false です。ほとんどのストリームではサポートされていませんが、サポートされていない場合でもエラーや例外は発生しません。予想されるデータ量が事前に明らかでなく、追加のデータを待機するべきではないネットワーキングのような状況でこれを使用します。
non-blocking?: 呼び出しの非ブロッキング実行、つまり直ちに使用できるデータがない場合にデータを読み込まずにすぐに返すかどうかを示します。既定は false です。これが true の場合は、allow-short-read? は暗黙的に true になります。
戻り値
結果を受け取った {Array-of t} および受け取った結果の数を返します。out を指定するとそれが返されます。それ以外の場合、このメソッドは新規の {Array-of t} を割り当ててそれを返します。
2 つ目の戻り値が -1 の場合、ストリームが EOF であることを示します。その場合、データは読み込まれていません。さらに non-blocking? が true の場合、戻り値が 0 になる可能性があり、これはすぐに使用できるデータがないことを示します。
説明
allow-short-read? または non-blocking? が true でない限り、このメソッドは n 要素が読み取られるか、ストリームが EOF になるまで返されません。この場合、準備が完了しているデータ量を返します (ただし、allow-short-read? だけが true の場合は少なくとも 1 つが返されます)。
non-blocking? が true でない限り、self がまだ開いていて、使用できるデータがない場合にはこのメソッドはブロックします。
注意事項
self が現在開いていない場合はエラーが発生します。
start < 0 or n < 0 の場合はエラーが発生します。
self から最初の要素を取得します。
戻り値
最初の戻り値は self の入力ストリームから取得したアイテムになります。ストリームが EOF の場合、2 番目の戻り値は true になります。その場合、最初の戻り値は null または 0 になります。
説明
self がまだ開いていて、使用できるデータがない場合にはこのメソッドはブロックします。
注意事項
現在 self が開いてなく読み込み可能でない場合はエラーになります。
オーバーライド
非抽象サブクラスにより実装される必要があります。実装では次のようなコードを含める必要があリます。
{if not self.open? then
{throw {new IOException, {format "%s not open", self}}}
}
このメソッドの実装の上部に記述します。