Diarkis C++Client Library API Document
DiarkisP2PBase クラス

P2P 機能を簡単に使用するために IDiarkisP2P クラスをラップする基本クラス [詳解]

#include <DiarkisP2PBase.h>

DiarkisP2PBase 連携図

公開メンバ関数

 DiarkisP2PBase ()
 DiarkisP2PBaseコンストラクタ [詳解]
 
virtual ~DiarkisP2PBase ()
 DiarkisP2PBaseデストラクタ [詳解]
 
virtual void SetupP2P (const std::shared_ptr< IDiarkisUdp > &udp, const std::shared_ptr< LoggerFactory > &loggerFactory, const char *uid)
 UDPプロトコルを使用したDirectMessageを設定します。 [詳解]
 
virtual void ConnectClient (const char *uid, const char **address, size_t addressCount, size_t timeoutInMilliseconds=5000, bool bBuffering=true)
 指定されたユーザーIDへのP2P接続を試みます。 [詳解]
 
virtual void ConnectClient (const std::string &uid, const std::vector< std::string > &address, size_t timeoutInMilliseconds=5000, bool bBuffering=true)
 ConnectClient()と同じです [詳解]
 
virtual void SetEncryptionKeys (bool bEncryption, const uint8_t *key, size_t keySize, const uint8_t *iv, size_t ivSize, const uint8_t *mkey, size_t mkeySize)
 暗号化キーを設定します。 [詳解]
 
virtual void SetEncryptionKeys (bool bEncryption, const std::vector< uint8_t > &key, const std::vector< uint8_t > &iv, const std::vector< uint8_t > &mkey)
 SetEncryptionKeys()と同じ [詳解]
 
virtual uint16_t SendUnicast (const uint8_t *payload, size_t payloadSize, RudpType type, const char *uid)
 1つのピアにメッセージを送信します。 [詳解]
 
virtual uint16_t SendUnicast (const uint8_t *payload, size_t payloadSize, RudpType type, const std::string &uid)
 SendUnicast()と同じ [詳解]
 
virtual uint16_t SendUnicast (const std::vector< uint8_t > &payload, RudpType type, const std::string &uid)
 SendUnicast()と同じです [詳解]
 
virtual uint16_t SendMulticast (const uint8_t *payload, size_t payloadSize, RudpType type, const char **uids, size_t uidsLen)
 複数のピアにメッセージを送信します。 [詳解]
 
virtual uint16_t SendMulticast (const uint8_t *payload, size_t payloadSize, RudpType type, const std::vector< std::string > &uid)
 SendMulticast()と同じです [詳解]
 
virtual uint16_t SendMulticast (const std::vector< uint8_t > &payload, RudpType type, const std::vector< std::string > &uid)
 SendMulticast()と同じです [詳解]
 
virtual uint16_t SendBroadcast (const uint8_t *payload, size_t payloadSize, RudpType type)
 すべてのピアにメッセージを送信します。 [詳解]
 
virtual uint16_t SendBroadcast (const std::vector< uint8_t > &payload, RudpType type)
 SendBroadcast()と同じ [詳解]
 
void Disconnect ()
 すべてのピアとのP2P接続を切断します。 [詳解]
 
bool Disconnect (const char *uid)
 指定したユーザーとのP2P接続を切断します。 [詳解]
 
void Update ()
 接続の状態やその他の情報を更新するための関数。定期的に呼び出す必要があります。 [詳解]
 
void SetSchedulerAddNotifyEvent (std::function< void()> notifyEventFunc)
 P2P関連のイベントがスケジューラに追加されたときに呼び出されるプロセスを設定します。 [詳解]
 
uint16_t GetConnectedNum ()
 P2Pによって接続されているピアの数を取得します。 [詳解]
 
void GetPeerUids (Diarkis::StdVector< Diarkis::StdString > &output)
 P2Pで接続されたピアのユーザーIDを取得します。 [詳解]
 

限定公開メンバ関数

virtual void OnP2PReady (const DiarkisReadyEventArgs &args)
 P2P接続が成功したときに呼び出されるコールバックイベントです。 [詳解]
 
virtual void OnP2PFail (const DiarkisFailEventArgs &args)
 ホールパンチが失敗したときに呼び出されるコールバックイベントです。 [詳解]
 
virtual void OnP2PDisconnect (const DiarkisP2PDisconnectEventArgs &args)
 P2P接続が切断された際に呼び出されるコールバックイベント [詳解]
 
virtual void OnP2PMessage (const DiarkisMessageEventArgs &args)
 P2Pでメッセージを受信したときに呼び出されるコールバックイベント [詳解]
 
virtual void OnP2PException (const DiarkisExceptionEventArgs &args)
 P2Pで送受信が失敗した際に呼び出されるコールバックイベント [詳解]
 
void RegisterPeer (const Diarkis::StdString &uid, const std::shared_ptr< Peer > &p2p)
 IDiarkisP2Pインスタンスを登録します [詳解]
 
uint64_t UnregisterPeer (const Diarkis::StdString &uid)
 IDiarkisP2Pインスタンスの登録を解除します [詳解]
 

限定公開変数類

Diarkis::StdUnorderedMap< Diarkis::StdString, std::shared_ptr< Peer > > p2pList_
 P2P接続のリスト。 キー:UID、値:IDiarkisP2Pへのポインタ [詳解]
 
std::recursive_mutex p2pListMutex_
 P2PリストMutex [詳解]
 
std::shared_ptr< IDiarkisUdpudp_
 IDiarkisUdpクラスへのポインター [詳解]
 
std::shared_ptr< LoggerFactoryloggerFactory_
 ロガークラスへのポインター [詳解]
 
std::shared_ptr< IDiarkisLoggerlogger_
 ロガークラスへのポインタ [詳解]
 
std::function< void()> schedulerAddNotifyEventFunc_
 P2P 関連のイベントが追加された時に呼ばれるコールバック関数 [詳解]
 
Diarkis::StdString ownGlobalAddress_
 私のグローバルIPアドレス [詳解]
 
Diarkis::StdString myUid_
 私のユーザーID [詳解]
 

詳解

P2P 機能を簡単に使用するために IDiarkisP2P クラスをラップする基本クラス

構築子と解体子

◆ DiarkisP2PBase()

DiarkisP2PBase::DiarkisP2PBase ( )

DiarkisP2PBaseコンストラクタ

◆ ~DiarkisP2PBase()

DiarkisP2PBase::~DiarkisP2PBase ( )
virtual

DiarkisP2PBaseデストラクタ

呼び出し関係図:

関数詳解

◆ SetupP2P()

void DiarkisP2PBase::SetupP2P ( const std::shared_ptr< IDiarkisUdp > &  udp,
const std::shared_ptr< LoggerFactory > &  loggerFactory,
const char *  uid 
)
virtual

UDPプロトコルを使用したDirectMessageを設定します。

ロガーとコールバック関数を登録します。

引数
[in]udpIDiarkisUdpクラスへのポインター
[in]loggerFactoryロガークラスへのポインター
[in]uidあなたのユーザーID

◆ ConnectClient() [1/2]

void DiarkisP2PBase::ConnectClient ( const char *  uid,
const char **  address,
size_t  addressCount,
size_t  timeoutInMilliseconds = 5000,
bool  bBuffering = true 
)
virtual

指定されたユーザーIDへのP2P接続を試みます。

接続に成功した場合、GetReadyEvent()で登録されたコールバックイベント(例:OnP2PReady)がトリガーされます。 接続に失敗した場合、GetFailEvent()で登録されたコールバックイベント(例:OnP2PFail)がトリガーされます。

引数
[in]uidあなたのユーザーID
[in]address接続するエンドポイントのリスト
[in]addressCountアドレスの長さ
[in]timeoutInMillisecondsホールパンチのタイムアウト時間
[in]bBufferingパケットの送受信時にバッファリングが行われるかどうか
呼び出し関係図:
被呼び出し関係図:

◆ ConnectClient() [2/2]

void DiarkisP2PBase::ConnectClient ( const std::string &  uid,
const std::vector< std::string > &  address,
size_t  timeoutInMilliseconds = 5000,
bool  bBuffering = true 
)
virtual

ConnectClient()と同じです

呼び出し関係図:

◆ SetEncryptionKeys() [1/2]

void DiarkisP2PBase::SetEncryptionKeys ( bool  bEncryption,
const uint8_t *  key,
size_t  keySize,
const uint8_t *  iv,
size_t  ivSize,
const uint8_t *  mkey,
size_t  mkeySize 
)
virtual

暗号化キーを設定します。

引数
[in]bEncryption暗号化するかどうか
[in]key暗号化キー
[in]keySizeキーの長さ
[in]iv初期化ベクトル
[in]ivSizeivの長さ
[in]mkeyメッセージ認証コード
[in]mkeySizemkeyの長さ
被呼び出し関係図:

◆ SetEncryptionKeys() [2/2]

void DiarkisP2PBase::SetEncryptionKeys ( bool  bEncryption,
const std::vector< uint8_t > &  key,
const std::vector< uint8_t > &  iv,
const std::vector< uint8_t > &  mkey 
)
virtual

SetEncryptionKeys()と同じ

呼び出し関係図:

◆ SendUnicast() [1/3]

uint16_t DiarkisP2PBase::SendUnicast ( const uint8_t *  payload,
size_t  payloadSize,
RudpType  type,
const char *  uid 
)
virtual

1つのピアにメッセージを送信します。

メッセージを受信すると、GetMessageEvent()で登録されたコールバックイベント(例:OnP2PMessage)がトリガーされます。

引数
[in]payload送信するデータ
[in]payloadSizeペイロードの長さ
[in]type使用するRUDPタイプ
[in]uidデータを送信するピアのユーザーID
戻り値
送信されたピアの数
被呼び出し関係図:

◆ SendUnicast() [2/3]

uint16_t DiarkisP2PBase::SendUnicast ( const uint8_t *  payload,
size_t  payloadSize,
RudpType  type,
const std::string &  uid 
)
virtual

SendUnicast()と同じ

呼び出し関係図:

◆ SendUnicast() [3/3]

uint16_t DiarkisP2PBase::SendUnicast ( const std::vector< uint8_t > &  payload,
RudpType  type,
const std::string &  uid 
)
virtual

SendUnicast()と同じです

呼び出し関係図:

◆ SendMulticast() [1/3]

uint16_t DiarkisP2PBase::SendMulticast ( const uint8_t *  payload,
size_t  payloadSize,
RudpType  type,
const char **  uids,
size_t  uidsLen 
)
virtual

複数のピアにメッセージを送信します。

メッセージを受信すると、GetMessageEvent() で登録されているコールバックイベント (例: OnP2PMessage) がトリガーされます。

引数
[in]payload送信するデータ
[in]payloadSizeペイロードの長さ
[in]type使用するRUDPタイプ
[in]uidsデータを送信するピアのユーザーIDのリスト
[in]uidsLenuidsの長さ
戻り値
送信されたピアの数
呼び出し関係図:
被呼び出し関係図:

◆ SendMulticast() [2/3]

uint16_t DiarkisP2PBase::SendMulticast ( const uint8_t *  payload,
size_t  payloadSize,
RudpType  type,
const std::vector< std::string > &  uid 
)
virtual

SendMulticast()と同じです

呼び出し関係図:

◆ SendMulticast() [3/3]

uint16_t DiarkisP2PBase::SendMulticast ( const std::vector< uint8_t > &  payload,
RudpType  type,
const std::vector< std::string > &  uid 
)
virtual

SendMulticast()と同じです

呼び出し関係図:

◆ SendBroadcast() [1/2]

uint16_t DiarkisP2PBase::SendBroadcast ( const uint8_t *  payload,
size_t  payloadSize,
RudpType  type 
)
virtual

すべてのピアにメッセージを送信します。

メッセージを受信すると、GetMessageEvent() で登録されたコールバックイベント(例:OnP2PMessage)がトリガーされます。

引数
[in]payload送信するデータ
[in]payloadSizeペイロードの長さ
[in]type使用するRUDPタイプ
戻り値
送信されたピアの数
被呼び出し関係図:

◆ SendBroadcast() [2/2]

uint16_t DiarkisP2PBase::SendBroadcast ( const std::vector< uint8_t > &  payload,
RudpType  type 
)
virtual

SendBroadcast()と同じ

呼び出し関係図:

◆ Disconnect() [1/2]

void DiarkisP2PBase::Disconnect ( )

すべてのピアとのP2P接続を切断します。

GetDisconnectEvent() で登録されたコールバックイベント(例:OnP2PDisconnect)は、切断されたピアのためにトリガーされます。

被呼び出し関係図:

◆ Disconnect() [2/2]

bool DiarkisP2PBase::Disconnect ( const char *  uid)

指定したユーザーとのP2P接続を切断します。

GetDisconnectEvent() で登録されたコールバックイベント(例: OnP2PDisconnect)がトリガーされます。

引数
[in]uid切断するユーザーのユーザーID。
戻り値
切断プロセスが実行されたかどうか。
呼び出し関係図:

◆ Update()

void DiarkisP2PBase::Update ( )

接続の状態やその他の情報を更新するための関数。定期的に呼び出す必要があります。

◆ SetSchedulerAddNotifyEvent()

void DiarkisP2PBase::SetSchedulerAddNotifyEvent ( std::function< void()>  notifyEventFunc)

P2P関連のイベントがスケジューラに追加されたときに呼び出されるプロセスを設定します。

◆ GetConnectedNum()

uint16_t DiarkisP2PBase::GetConnectedNum ( )

P2Pによって接続されているピアの数を取得します。

◆ GetPeerUids()

void DiarkisP2PBase::GetPeerUids ( Diarkis::StdVector< Diarkis::StdString > &  output)

P2Pで接続されたピアのユーザーIDを取得します。

◆ OnP2PReady()

void DiarkisP2PBase::OnP2PReady ( const DiarkisReadyEventArgs args)
protectedvirtual

P2P接続が成功したときに呼び出されるコールバックイベントです。

呼び出し関係図:
被呼び出し関係図:

◆ OnP2PFail()

void DiarkisP2PBase::OnP2PFail ( const DiarkisFailEventArgs args)
protectedvirtual

ホールパンチが失敗したときに呼び出されるコールバックイベントです。

指定された時間内にホールパンチが完了しなかったときにトリガーされます。

呼び出し関係図:
被呼び出し関係図:

◆ OnP2PDisconnect()

void DiarkisP2PBase::OnP2PDisconnect ( const DiarkisP2PDisconnectEventArgs args)
protectedvirtual

P2P接続が切断された際に呼び出されるコールバックイベント

呼び出し関係図:
被呼び出し関係図:

◆ OnP2PMessage()

void DiarkisP2PBase::OnP2PMessage ( const DiarkisMessageEventArgs args)
protectedvirtual

P2Pでメッセージを受信したときに呼び出されるコールバックイベント

呼び出し関係図:
被呼び出し関係図:

◆ OnP2PException()

void DiarkisP2PBase::OnP2PException ( const DiarkisExceptionEventArgs args)
protectedvirtual

P2Pで送受信が失敗した際に呼び出されるコールバックイベント

ソケットが閉じられ、送受信が不可能になった時にトリガーされます。

呼び出し関係図:
被呼び出し関係図:

◆ RegisterPeer()

void DiarkisP2PBase::RegisterPeer ( const Diarkis::StdString uid,
const std::shared_ptr< Peer > &  p2p 
)
protected

IDiarkisP2Pインスタンスを登録します

引数
[in]uidピアのUID
[in]p2pIDiarkisP2Pインスタンスへのポインタ
被呼び出し関係図:

◆ UnregisterPeer()

uint64_t DiarkisP2PBase::UnregisterPeer ( const Diarkis::StdString uid)
protected

IDiarkisP2Pインスタンスの登録を解除します

引数
[in]uidピアのUID
戻り値
削除されたインスタンスの数
被呼び出し関係図:

メンバ詳解

◆ p2pList_

Diarkis::StdUnorderedMap<Diarkis::StdString, std::shared_ptr<Peer> > DiarkisP2PBase::p2pList_
protected

P2P接続のリスト。 キー:UID、値:IDiarkisP2Pへのポインタ

◆ p2pListMutex_

std::recursive_mutex DiarkisP2PBase::p2pListMutex_
protected

P2PリストMutex

◆ udp_

std::shared_ptr<IDiarkisUdp> DiarkisP2PBase::udp_
protected

IDiarkisUdpクラスへのポインター

◆ loggerFactory_

std::shared_ptr<LoggerFactory> DiarkisP2PBase::loggerFactory_
protected

ロガークラスへのポインター

◆ logger_

std::shared_ptr<IDiarkisLogger> DiarkisP2PBase::logger_
protected

ロガークラスへのポインタ

◆ schedulerAddNotifyEventFunc_

std::function<void()> DiarkisP2PBase::schedulerAddNotifyEventFunc_
protected

P2P 関連のイベントが追加された時に呼ばれるコールバック関数

◆ ownGlobalAddress_

Diarkis::StdString DiarkisP2PBase::ownGlobalAddress_
protected

私のグローバルIPアドレス

◆ myUid_

Diarkis::StdString DiarkisP2PBase::myUid_
protected

私のユーザーID


このクラス詳解は次のファイルから抽出されました: