(クラス)
基礎となる ByteInputStream から読み取られたデータを解凍します。
説明
データは
zlib 形式または
gzip 形式のデータのいずれかから解凍されます。その両方が DEFLATE 圧縮データ形式を使用します。DEFLATE は、LZ77 アルゴリズムとハフマン コーディングの組み合わせてデータを圧縮する可逆的な圧縮データ形式です。The DEFLATE 形式は RFC1951 で定義されます (
http://www.ietf.org/rfc/rfc1951.txt を参照してください)。
プログラミング注意事項
これは、
InflateByteInputStream.default が
compression-format = CompressionFormat.zlib で呼び出される場合、HTTP ヘッダー
"Content-Encoding: deflate" を持つ Web サーバーから取得したデータを解凍するために使用できます。
InflateByteInputStream.default が
compression-format = CompressionFormat.gzip で呼び出される場合、HTTP ヘッダー
"Content-Encoding: gzip" でデータを解凍するために使用できます。可能な圧縮形式のリストと共に HTTP ヘッダー
"Accept-Encoding" が HTTP リクエストに含まれている場合、多くの Web サーバーは圧縮データのみを送信します。
コンストラクタ public | {InflateByteInputStream.default} |
アクセサ public InflateByteInputStream.non-blocking-supported?:
bool
アクセサ public InflateByteInputStream.open?:
bool
アクセサ public InflateByteInputStream.origin-url:#
Url
アクセサ public InflateByteInputStream.when-last-modified:#
DateTime
public | {InflateByteInputStream.close}:void |
read: | self から t タイプのオブジェクトを n まで読み取ります。 |
public | {InflateByteInputStream.read out:#{Array-of byte} = null,start:int = 0,n:int = max-int - start,allow-short-read?:bool = false,non-blocking?:bool = false }:(vals:{Array-of byte}, number-read:int) |
public | {InflateByteInputStream.read-one}:(b:byte, eof?:bool) |
(コンストラクタ)
public | {InflateByteInputStream.default} |
InflateByteInputStream を初期化します。
close-stream-on-close?: このクラスの close メソッドが、基礎となるストリーム上で close を呼び出すかどうかを指定します。
buffer-size: 基礎となるストリームの読み取りで使用するバッファ サイズ (バイト単位) です。既定値は 8180 です。
compression-format: 圧縮された入力データの形式です。既定値は zlib です。
(アクセサ)
アクセサ public InflateByteInputStream.non-blocking-supported?:
bool
(アクセサ)
アクセサ public InflateByteInputStream.open?:
bool このストリームが現在開いているかどうかを示します。Stream-of.close が呼び出されると false を返します。
注意事項
オーバーライド
サブクラスにはこのメソッドを実装する必要があります。
(アクセサ)
アクセサ public InflateByteInputStream.origin-url:#
Url このストリームを開いた Url を返します。そのような Url が存在しない場合は null を返します。
例
(アクセサ)
アクセサ public InflateByteInputStream.when-last-modified:#
DateTime 元のデータの最終変更時刻 (特定できる場合)。
説明
基となるデータが最後に修正された時間がわかる場合は、その時間を返します。そうでなければ、null を返します。
http: URL を基にして作成されたストリームの場合は、存在すれば
Last-Modified HTTP ヘッダーをパースした時間となります。
DefaultBufferedInputStream-of のような他のストリームをラップしたストリームの場合は、一般的に基になるストリームの値となります。
それ以外のストリームは null を返します。
(メソッド)
ストリームから非同期に読み込みを行います。
プログラミング注意事項
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} です。
(メソッド)
public | {InflateByteInputStream.close}:void |
(メソッド)
public | {InflateByteInputStream.read out:#{Array-of byte} = null,start:int = 0,n:int = max-int - start,allow-short-read?:bool = false,non-blocking?:bool = false }:(vals:{Array-of byte}, number-read:int) |
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 の場合はエラーが発生します。
(メソッド)
public | {InflateByteInputStream.read-one}:(b:byte, eof?:bool) |
self から最初の要素を取得します。
戻り値
最初の戻り値は self の入力ストリームから取得したアイテムになります。ストリームが EOF の場合、2 番目の戻り値は true になります。その場合、最初の戻り値は null または 0 になります。
説明
self がまだ開いていて、使用できるデータがない場合にはこのメソッドはブロックします。
注意事項
現在 self が開いてなく読み込み可能でない場合はエラーになります。
オーバーライド
非抽象サブクラスにより実装される必要があります。実装では次のようなコードを含める必要があリます。
{if not self.open? then
{throw {new IOException, {format "%s not open", self}}}
}
このメソッドの実装の上部に記述します。