= メモ == 接続状態を保持する 保持できるようにしたい情報 * nick * username * 接続しているサーバ(とポート) * 接続時(NICK, PASS, USERの後)にサーバから送られてきたメッセージ * joinしているチャネル == チャネルの状態を保持(トラック)するモジュール 保持したい情報。 * チャネルのモード * チャネルにいる人 * どの人が@を持っているか == 参加者の状態を保持(トラック)するモジュール 保持したい情報。 * その時のnickと過去のnick * username * 接続元ホストとユーザ名 * 最後の発言とその時刻 == 実装について * 書き出しの方はQueueを使わず、Socketオブジェクトそのものを 扱うようにしてはどうだろう? * Queueを経由しまくると遅くなるようだ。 ホントにQueueのせいか? * Connection#pushを変更。@write_thの廃止。…くらいか。 やってみようか。 →やってみた。多少ましになった気がする。 (2001-06-05) == スレッドその他について * RubyのQueueで同期をとろうとするとdead lockになりやすい? * ゆえに、終了処理をするスレッドを動かすタイミングを取るために Queueを使うなんてのはあまりよろしくないようだ。 そのようなスレッドではThread.stopさせておいて、 他スレッドからrunさせてやるのがよさげ。 * initializeあたりで@client_th = Thread.currentしておいて 終了処理の中で@client_th.raise(...)するというのもよさげ。 特にInterrupt入ったときなどに有効。