設計ドキュメント - ステートマシン図
6. 詳細設計 - ステートマシン図
本セクションでは、クライアントのサーバーへの接続から認証完了までの状態遷移をステートマシン図で表現します。IRCプロトコルでは、PASS、NICK、USERコマンドが特定の順序で送信され、認証が完了する必要があります。この図は、Clientオブジェクトがこれらのコマンドを受信した際の内部状態の変化を示します。
クライアント認証状態遷移
状態の詳細
- Unregistered: クライアントがTCP接続を確立した直後の初期状態。まだどの認証情報も提供されていません。
- PasswordSet:
PASSコマンドが正常に処理された状態。しかし、ニックネームやユーザー名はまだ設定されていません。 - NicknameSet:
NICKコマンドが正常に処理された状態。パスワードやユーザー名はまだ設定されていません。PASSコマンドが不要なサーバーの場合、この状態から直接UserSetAndNickSetに進むこともあります。 - NicknameSetAndPassSet:
NICKとPASSの両方が設定済みですが、USERコマンドがまだ処理されていない状態。この状態でUSERコマンドを受信するとRegistered状態に遷移します。 - UserSetAndNickSet:
NICKとUSERの両方が設定済みですが、PASSコマンドがまだ処理されていない状態(サーバーがパスワードを要求する場合)。この状態でPASSコマンドを受信するとRegistered状態に遷移します。 - Registered: 全ての必要な認証情報(
NICK、USER、およびサーバーが要求する場合はPASS)が正常に提供され、クライアントがIRCサーバー上で完全に登録された状態。この状態になると、JOIN、PRIVMSGなどのIRCコマンドを実行できるようになります。 - [*]: 終了状態。クライアントが切断された場合や、致命的なエラーが発生した場合に遷移します。