In article <1014706989.247493.28278.nullmailer / ev.netlab.jp>, matz / ruby-lang.org (Yukihiro Matsumoto) writes: > APIとしてはこれでよいのではないかと思います。順序だけは考慮 > の余地がありますが。順序関係なしに文字列ならモード、それ以外 > ならクラス(to_fdの対象)とみなすという(余計な)親切APIもありえ > ますね。 なるほど。今はどっちかに決めうちでも、後から思い直しせば互換性を損ねる ことなく両方を扱えるようにもできるわけですね。気が楽になりました。 とすると残りはとりあえずどちらの順序にするかですが、 「とりあえず rw にしたい」という用途と 「とりあえず TCPSocket にしたい」という用途のどっちが多いのかなぁ。 この機能の用途で私が聞いたことがあるのは「詳解 UNIX プログラミング」の オープンサーバと、あとは HTTP サーバで accept したコネクションを他のプ ロセスに渡して処理させるという話の二つしかないんですが、ほかの用途を知っ ている人はいます? あと、書くのを忘れてましたが、じつは fd の他に 1byte 送るんですよね。 Linux と Solaris ではデータを送らないと動かないからなんですが... まぁ "\0" 固定のままでもいいかな。いつか(例えば Ruby 以外のものとの通信で使 うとかで)変えたいという要望が出たらそのときに API を拡張するか、 sendmsg, recvmsg を generic に扱える API を新設するかどちらかを考えま しょう。 > |あるいは IO.for_fd は引数を二つとれるけれど、 > |BasicSocket.for_fd は引数が一つという違いが問題なのかも知れません。 > > やっぱりstdioが元凶のような気がしてきました。そのうち撲滅し > ます。そしたら、妙な制約にしばられることはなくなるし。この辺 > はそれまで棚上げにしません? それは構いません。 でも、API だけは後からは変えにくいので、merge する前に相談しておこうと 思いまして。 -- [田中 哲][たなか あきら][Tanaka Akira] 「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)