In article <20000720161035-1147U.unnie / blue.sky.or.jp>,
  Ueno Katsuhiro <unnie / blue.sky.or.jp> writes:

> Deflate.new を使って圧縮する場合、finish メソッドで
> 圧縮ストリームを明示的に終了させる必要があります。

あー、説明が足りませんでしたが、私の用途では finish は使えないんです。
なぜかというと、バッファをフラッシュした後にもさらにデータを送る必要が
あるからです。

具体的にいうと、今、cvs protocol の proxy を作っているんですが、この
protocol では cilent が Gzip-stream 9 などとリクエストしたとたんにそれ
以降の通信が(双方向ともに) deflate 圧縮されて送られます。

ここで、単に圧縮するだけだと、リクエストやレスポンスを送ったつもりになっ
ても圧縮のための先読みのバッファに溜ってしまって相手がちゃんとデータを
受けとれません。そこで、(圧縮率が落ちるのはあきらめて)データが送り先で
確実に展開できるような圧縮結果を生成する必要があります。これがバッファ
をフラッシュする、という zlib の SYNC_FLUSH の機能です。

とゆーわけで、この機能を利用できるようにしていただけるとありがたいんで
すが。

> ちなみに、deflate/inflate メソッドの返り値を保存するのが煩わしいなら、
> << メソッドを使って ZStream の内部バッファに保存させ
> 後で finish や flush_out で一気に取り出す、といったこともできます。

そーゆーバッチ処理的な話ではなくて対話的なやつなので...
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「まぁ、わたしって、福の神だったのね$(C⊇」(ヘッポコあんてぃ〜く, 清水文化)