問題点
設計的な問題
- send_session/client_session をクラス化したい
- P4UClients/P4UServer のインスタンス変数にアクセスできない問題
- Ruby は多重継承が出来ない。Moduleで分割するのがいいかも
- ダウンロードタスク/アップロードタスクもクラス化したい
- 抽象的にタスクを扱う仕組みの導入
- Ruby のスレッドはあまり早くない
- マルチスレッドから IO#select への移行
- wxClient.rb の Wx::Timer + Mutex + IO#select は動作が軽快だけど理解しにくい
- RubyだとGUI実装と配布に難あり
- Javaという選択肢もあるが、また新しい言語の習得を強要するのもアレ
NAT越え
- グローバルアドレスをどうやって取得するか?
- 現状では、サーバーから見たクライアントのアドレスを持ち主のアドレスとして登録している
- LAN内の通信とNAT越えの通信を両立するにはどうすればいいか?
- 今のままでは、鯖を立てた人が倉として参加することが難しい(同一マシン内だとlocalhostとして認識される)
レジューム
- レジュームの実現方法は?
- ブロック単位でキャッシュに保存する
- 完了したらキャッシュをファイルに変換
多重ダウンロード
- ブロックを取得するノードの決定方法は?
- 具体的にどうやって実装するか?