Diarkis Module の初期化と終了
本ページでは directmessage_simple サンプルからコードの一部を紹介し Diarkis Module を利用する際の全体的な流れを説明します。
実際のサンプルのソースコードは samples\directmessage_simple\directmessage_simple.cpp に配置されています。
Diarkis ランタイム・ライブラリおよび Diarkis Module の初期化
初めに Diarkis ランタイム・ライブラリ および Diarkis Module を初期化するために DiarkisInterfaceBase::DiarkisInit() を呼び出します。
この処理はアプリケーション全体で最初に一度だけ実行する必要があります。
// Diarkis ランタイムの初期化処理
// Diarkis の機能を使用する前にアプリケーション全体で一度だけ呼び出す必要があります。
// 本サンプルではファイルにログを出力する設定でランタイムを初期化します。
DiarkisInterface::DiarkisInit(uid, LogOutType::FILE_OUT, true, nullptr);DiarkisInterfaceBase インスタンスの作成
次に Diarkis サーバーに接続して Diarkis の各種機能を使用するために DiarkisInterfaceBase を継承したクラスのインスタンスを作成します。
この時 Diarkis サーバーへ接続する際に使用する UID(User ID) を渡します。
// Diarkis のすべての機能にアクセスするために DiarkisInterface を継承したクラスを作成します。
diarkis = Diarkis::DiarkisAllocShared<DiarkisInterfaceDirectMessageSimple>(uid);低レベル通信レイヤーの初期化
DiarkisInterfaceBase のインスタンス作成後、Diarkis サーバーとの通信に使用する TCP/UDP 通信をセットアップします。
diarkis->SetupUdp();Diarkis サーバーへの接続情報取得
次に Diarkis サーバーへ接続するための情報を取得します。 (TODO) クライアントキーやサーバー・タイプなどの説明を軽くしたい。 付属サンプルではサンプル実装として Diarkis クラスタ内の HTTP サーバーから接続情報を取得するパターンと API サーバー(外部サーバー)経由で接続情報を取得する2パターンが実装されています。
Diarkis クラスター内の HTTP サーバーから接続情報を取得するパターン
DiarkisInterfaceBase::GetEndpoint() を使用して接続情報を取得します。
取得した接続情報は DiarkisInterfaceBase 内に自動的に保存され接続する時に使用されます。
また、サンプルでは使用していませんが
DiarkisInterfaceBase::RequestEndpointAsync()DiarkisInterfaceBase::GetEndpointAsyncStatus()DiarkisInterfaceBase::GetAsyncEndpointResult()
を使用して、非同期処理でエンドポイント情報を取得することも可能です。
API サーバー(外部サーバー)経由で接続情報を取得するパターン
API サーバー(外部サーバー)など、何らかの方法で取得した接続情報を AuthInfo へ保存し、実際の接続時にこの情報を渡して接続処理を行います。
Diarkis サーバーへ接続
外部から接続情報を取得した場合はこのタイミングで取得した情報を渡します。 また、接続処理を実行後、実際に接続が完了するまで時間がかかることがあるため接続状態を定期的にチェックして接続が完了したかどうかを確認します。
モジュール毎の初期化
Diarkis サーバーへの接続が完了した後は使用したい各モジュールのセットアップを行い、アプリケーションが必要な通信処理を行います。
Diarkis サーバーから切断
DiarkisInterfaceBase::Disconnect() を呼び出すことで Diarkis サーバーからの切断処理が開始されます。
接続時と同様に実際に切断が完了するまでは時間がかかることがあるため、切断処理を実行後に接続状態をチェックして切断が完了したかどうかを確認します。
使用済みインスタンスの開放
Diarkis サーバーからの切断が完了し DiarkisInterfaceBase が必要なくなったためインスタンスを開放します。
終了処理
アプリケーションの終了時に DiarkisInterfaceBase::DiarkisDestroy() を呼び出して Diarkis 全体の終了処理を行います。 この処理は DiarkisInterfaceBase::DiarkisInit() と対になっていて、DiarkisInit 同様にアプリケーションのライフサイクル全体で一度だけ呼び出してください。
最終更新
役に立ちましたか?

