directmessage_simple
最終更新
役に立ちましたか?
役に立ちましたか?
diarkis = Diarkis::DiarkisAllocShared<DiarkisInterfaceDirectMessageSimple>(uid);
...
// Diarkis Module の DirectMessage をセットアップ
// DiarkisInterface 内で管理されている DirectMessage モジュールを初期化します。
// DirectMessage モジュールのインスタンスを確保して、通信に使用する TCP/UDP モジュールと関連付けます。
// 以降、DirectMessage モジュールのポインタを DiarkisInterface から取得して DirectMessage の機能にアクセスします。
diarkis->SetupDirectMessage();std::shared_ptr<DirectMessageSimple> dm = diarkis->GetDirectMessage();
...
// UID を指定してメッセージを送信
dm->Send(targetUid, payload.data(), payload.size());// 指定したユーザーとの接続を切断します。
// 切断する際に任意のデータを切断先のユーザーに送信することができます。
dm->Disconnect(targetUid, payload.data(), payload.size());/*
* DirectMessage 関連の処理をアプリ側でカスタマイズするための実装。
* DirectMessage 関連のデータを受信した際に On... 系のコールバックが発火するため、アプリが処理したい内容を実装します。
* 本サンプルでは取得したメッセージをコンソールへ表示しています。
*/
class DirectMessageSimple : public DiarkisDirectMessageBase
{
...
/**
* @~japanese
* @brief 他のリモートユーザーから DirectMessage が送られてきた際に呼ばれるコールバックイベントを取得する。
* @details DirectMessage Message の通知 ( サーバからのPush ) が送られた際に呼ばれる。
* @~
*/
void OnMessage(const DiarkisDirectMessageEventArgs& e) override
{
Diarkis::StdString str((const char*)e.GetPayload().data(), e.GetPayload().size());
DiarkisUtils::Print("DirectMessageSimple::OnMessage called - %s", str.c_str());
DiarkisDirectMessageBase::OnMessage(e);
anyMessageReceived_ = true;
}
...
/*
* DirectInterface が内部で管理する各機能のモジュールをアプリ固有のものに置き換えるために DiarkisInterfaceBase を継承したクラスを実装します。
*/
class DiarkisInterfaceDirectMessageSimple : public DiarkisInterfaceBase
{
public:
...
void SetupDirectMessage(void)
{
if (udpBase_ != nullptr && udpBase_->Get() != nullptr)
{
// You can use the customized DirectMessage class by instantiating it here.
// アプリ側でカスタマイズしたクラスを作成します。
if (dmBase_ == nullptr)
dmBase_ = Diarkis::DiarkisAllocShared<DirectMessageSimple>();
// Initialize DirectMessage instance and register callback functions.
// DirectMessage クラスを初期化してコールバックイベントを登録
dmBase_->SetupUdp(udpBase_->Get(), this->GetLoggerFactory());
}
...