EventMachineについては2つだけ見ておこう。以下はドキュメントを雑に和訳している。ネットワークコネクションからデータを受け取った際に実行される。受け取ったバイナリ文字列を引数とする。サブクラスはこれをオーバーライドして挙動を実装すること。ネットワークコネクションにデータを送信する際に使用する。受け取ったバイナリ文字列を引数とする。メソッドをオーバーライドしているはずである。bodyの順の配列を想定していると見て取れる。返り値がtruthyでなければsend_dataしていない。これはどういう意味か。Thin::Request#envを見てみる。対してparseの中で何が構成されるかさえ見れば良い。parseメソッドは以下のようになっている。endend先に返り値を見よう。*4finished?かどうかを返している。finished?であればレスポンスデータを送信しているといえる。parseは適当なチャンクごとに分割してに実行されるということだとわかる。ドキュメントを読むと、「プロトコルやバッファサイズ、OSに依存して、不完全なメッセージでありうる」とかいてある。考えてみればそりゃそうだ。ファイルアップロードのように2GBのリクエストがきたら大変なことになる。@nparsed)だとわかる。