|
ft_irc 1.0
|
このドキュメントは、IRCサーバの内部実装を理解し、開発やデバッグを行うことを目的としています。 主に、ircserv のサーバ開発者およびコードレビュー担当者を読者として想定しています。
ビルド方法: プロジェクトのビルド方法については、ft_irc Documentationのセットアップとビルド を参照してください。
Doxygenドキュメントの生成方法: Doxygenドキュメントはft_ircプロジェクトのルートでmake doxygen を実行することで生成されます。
ircserv は、C++98標準に準拠したマルチクライアント対応IRCサーバです。 主な設計思想として、モジュール性を高め、各コンポーネントが明確な責任を持つように設計されています。
主要なコンポーネントとそれらの関係性:
run(), acceptNewClient(), handleClientData(), sendResponse(), closeClientConnection()Client クラスのインスタンスを管理し、CommandManager を利用してコマンドを処理します。addClient(), removeClient(), broadcastMessage(), setTopic(), setMode()Server クラスによって管理され、クライアントからのチャネル関連コマンドによって操作されます。execute() メソッドなど)。各コマンドクラス (例: PASS, NICK, JOIN) はこのインターフェースを実装し、それぞれのコマンド固有のロジックを提供します。CommandManager によって実行されます。全体的なデータフローの概要:
Server がクライアント接続を受け入れ、Client オブジェクトを作成します。Server はクライアントソケットからのデータ読み込みイベントを監視し、データを受信すると Client オブジェクトに紐付けます。CommandManager に渡され、コマンドとしてパースされます。CommandManager は適切なコマンドクラスの execute() メソッドを呼び出し、コマンドが実行されます。Server を通じて該当するクライアントまたはチャネルに送信されます。本サーバは、以下のRFC1459コマンドをサポートします。
これらのコマンドは CommandManager を通じてパースされ、対応するコマンドクラス (PassCommand, NickCommand など) の execute メソッドによって処理されます。 各コマンドの詳細は、それぞれのコマンドクラスのドキュメントを参照してください。 現在、RFC1459以外の独自拡張コマンドや特定の注意点はありません。
本プロジェクトでは、以下の規約を遵守してください。
@brief: 簡潔な説明 (1行)@details: 詳細な説明@param: 引数の説明@return: 戻り値の説明@see, @note, @attention) も適宜使用してください。Doxygenドキュメントの更新やコードへの貢献については、以下の点を考慮してください。