CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
クラス nn::pia::clone::CloneProtocol

ステーション間で値の共有を行うためのプロトコルです。
[詳細]

+ nn::pia::clone::CloneProtocolに対する継承グラフ

構成

struct  Setting
 初期化時に指定する設定構造体です。 [詳細]
 

Public 型

typedef int(* ClockPriorityJudgeFunction )(ClockValue clock, StationIndex stationA, StationIndex stationB)
 順序比較関数です。
 
enum  ErrorType {
  ErrorType_Nothing = 0,
  ErrorType_EventDropped,
  ErrorType_ClockOverflow
}
 エラーの発生状態を表します。 [詳細]
 
enum  State {
  State_Inactive = 0x10,
  State_Start = 0x20,
  State_Active = 0x30,
  State_Stop = 0x40
}
 CloneProtocol の動作状態を表します。 [詳細]
 

Public メソッド

void Finalize ()
 終了処理を行います。
 
int GetAckBufferUsedNumMax () const
 通信中に実際に使用された Ack 用バッファ数の最大値を取得します。
 
ClockValue GetClock () const
 現在の時刻を取得します。
 
uint32_t GetElementSizeMax () const
 使用するクローンエレメントの SerializePolicy::GetSerializedSize() で定義できる値の最大値を取得します。
 
ErrorType GetError () const
 エラーの発生状態を取得します。
 
uint32_t GetSendPeriod () const
 CloneProtocol::SetSendPeriod() で指定した送信間隔の設定値を取得します。
 
State GetState () const
 現在の動作状態を取得します。
 
Result Initialize (const Setting &setting)
 初期化します。 clone::BeginSetup()clone::EndSetup() 間で呼び出す必要があります。
 
bool IsActiveStation (StationId stationId) const
 指定したステーションの CloneProtocol が動作中かどうかを判定します。
 
bool IsRegulatingClock () const
 時刻の調整を実行中かどうかを取得します。
 
Result RegisterAtomicSharingClone (AtomicSharingClone *pClone, CloneBase::Id cloneId)
 AtomicSharingClone を指定の ID に登録します。
 
Result RegisterReceiveClone (ReceiveClone *pClone, StationIndex sendStationIndex, CloneBase::Id cloneId)
 ReceiveClone を指定の ID に登録します。
 
Result RegisterSendClone (SendClone *pClone, CloneBase::Id cloneId)
 SendClone を指定の ID に登録します。
 
Result RegisterSequentialSharingClone (SequentialSharingClone *pClone, CloneBase::Id cloneId)
 SequentialSharingClone を指定の ID に登録します。
 
Result RegulateClock ()
 時刻の再調整を開始します。
 
AtomicSharingCloneSearchAtomicSharingClone (CloneBase::Id cloneId)
 指定した ID の AtomicSharingClone を検索して取得します。
 
const AtomicSharingCloneSearchAtomicSharingClone (CloneBase::Id cloneId) const
 指定した ID の AtomicSharingClone を検索して取得します。
 
ReceiveCloneSearchReceiveClone (StationIndex sendStationIndex, CloneBase::Id cloneId)
 指定した ID の ReceiveClone を検索して取得します。
 
const ReceiveCloneSearchReceiveClone (StationIndex sendStationIndex, CloneBase::Id cloneId) const
 指定した ID の ReceiveClone を検索して取得します。
 
SendCloneSearchSendClone (CloneBase::Id cloneId)
 指定した ID の SendClone を検索して取得します。
 
const SendCloneSearchSendClone (CloneBase::Id cloneId) const
 指定した ID の SendClone を検索して取得します。
 
SequentialSharingCloneSearchSequentialSharingClone (CloneBase::Id cloneId)
 指定した ID の SequentialSharingClone を検索して取得します。
 
const SequentialSharingCloneSearchSequentialSharingClone (CloneBase::Id cloneId) const
 指定した ID の SequentialSharingClone を検索して取得します。
 
Result SetClockOverFlowSpanForDebug (uint32_t span)
 (デバッグ用)時刻の値がオーバーフローするまでの期間を設定します。
 
Result SetResendSpanRatio (float rttRatio)
 計測して求めた基準となる RTT(ミリ秒) に対する再送間隔の比率を指定します。
 
Result SetSendPeriod (uint32_t sendPeriod)
 送信間隔を設定します。
 
Result Start ()
 CloneProtocol の動作を開始します。
 
Result Stop ()
 CloneProtocol の動作を終了します。
 
virtual void Trace (uint64_t flag) const
 デバッグに有用な情報をプリントします。
 
Result UnregisterAtomicSharingClone (AtomicSharingClone *pClone)
 AtomicSharingClone を登録解除します。
 
Result UnregisterAtomicSharingClone (CloneBase::Id cloneId)
 AtomicSharingClone を登録解除します。
 
Result UnregisterReceiveClone (ReceiveClone *pClone)
 ReceiveClone を登録解除します。
 
Result UnregisterReceiveClone (StationIndex sendStationIndex, CloneBase::Id cloneId)
 ReceiveClone を登録解除します。
 
Result UnregisterSendClone (SendClone *pClone)
 SendClone を登録解除します。
 
Result UnregisterSendClone (CloneBase::Id cloneId)
 SendClone を登録解除します。
 
Result UnregisterSequentialSharingClone (SequentialSharingClone *pClone)
 SequentialSharingClone を登録解除します。
 
Result UnregisterSequentialSharingClone (CloneBase::Id cloneId)
 SequentialSharingClone を登録解除します。
 
void UpdateClock ()
 時刻を 1 フレーム進めます。
 
プロファイリング
Result SetProfiler (CloneProfilerBase *pSendProfiler, CloneProfilerBase *pReceiveProfiler)
 送受信のプロファイリング管理オブジェクトを設定します。
 
const CloneProfilerBaseGetSendProfiler () const
 設定されている送信プロファイリング管理オブジェクトを取得します。
 
const CloneProfilerBaseGetReceiveProfiler () const
 設定されている受信プロファイリング管理オブジェクトを取得します。
 
void ResetProfiler ()
 送受信のプロファイリングされた結果をリセットします。
 
uint32_t GetProfiledLatestSendCount (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledLatestSendSize (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledLatestSendNoCompressedSize (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージの圧縮前のサイズ(バイト)を取得します。
 
uint32_t GetProfiledLatestSendUnicastCount (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間にユニキャストで送信した CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledLatestSendUnicastSize (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間にユニキャストで送信した CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledLatestSendSystemCount (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信したシステム用 CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledLatestSendSystemSize (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信したシステム用 CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledTotalSendCount (StationIndex stationIndex) const
 ResetProfiler 以降に送信した CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledTotalSendSize (StationIndex stationIndex) const
 ResetProfiler 以降に送信した CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledTotalSendNoCompressedSize (StationIndex stationIndex) const
 ResetProfiler 以降に送信した CloneProtocol メッセージの圧縮前のサイズ(バイト)を取得します。
 
uint32_t GetProfiledTotalSendUnicastCount (StationIndex stationIndex) const
 ResetProfiler 以降にユニキャストで送信した CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledTotalSendUnicastSize (StationIndex stationIndex) const
 ResetProfiler 以降にユニキャストで送信した CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledTotalSendSystemCount (StationIndex stationIndex) const
 ResetProfiler 以降に送信したシステム用 CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledTotalSendSystemSize (StationIndex stationIndex) const
 ResetProfiler 以降に送信したシステム用 CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledLatestReceiveCount (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に受信した CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledLatestReceiveSize (StationIndex stationIndex) const
 直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に受信した CloneProtocol メッセージのサイズ(バイト)を取得します。
 
uint32_t GetProfiledTotalReceiveCount (StationIndex stationIndex) const
 ResetProfiler 以降に受信した CloneProtocol メッセージの個数を取得します。
 
uint32_t GetProfiledTotalReceiveSize (StationIndex stationIndex) const
 ResetProfiler 以降に受信した CloneProtocol メッセージのサイズ(バイト)を取得します。
 

Static Public 変数

static const uint32_t CompressionLevelHigh = 9
 CloneProtocol::Setting::dataCompressionLevel で指定する送信データの圧縮レベル(圧縮率重視)です。
 
static const uint32_t CompressionLevelLow = 1
 CloneProtocol::Setting::dataCompressionLevel で指定する送信データの圧縮レベル(速度重視)です。
 
static const uint32_t CompressionLevelMiddle = 5
 CloneProtocol::Setting::dataCompressionLevel で指定する送信データの圧縮レベルです。
 
static const uint32_t CompressionLevelNone = 0
 CloneProtocol::Setting::dataCompressionLevel で指定する送信データの圧縮レベル(圧縮なし)です。
 

説明

ステーション間で値の共有を行うためのプロトコルです。

型定義

typedef int(* nn::pia::clone::CloneProtocol::ClockPriorityJudgeFunction)(ClockValue clock, StationIndex stationA, StationIndex stationB)

順序比較関数です。

引数
[in]clock比較を行う時刻です。
[in]stationA比較対象のステーションの StationIndex です。
[in]stationB比較対象のステーションの StationIndex です。
戻り値
時刻が clock の時に stationA より stationB の方が前に起こったと扱う場合は負の値を、 後に起こったと扱う場合は正の値を返します。

stationA と stationB が同じ値で呼び出されることはありません。

この関数は、ある時刻において順序関係が矛盾しないようになっている必要があります。 例えば、 ClockPriorityJudgeFunction(clock, stationA, stationB) < 0 であるならば、 ClockPriorityJudgeFunction(clock, stationB, stationA) > 0 とならなければなりません。 また、 ClockPriorityJudgeFunction(clock, stationA, stationB) < 0 かつ ClockPriorityJudgeFunction(clock, stationB, stationC) < 0 であるならば ClockPriorityJudgeFunction(clock, stationA, statoinC) < 0 とならなければなりません。

ただし、別の時刻においては順序関係が一致しなくても構いません。 すなわち、ClockPriorityJudgeFunction(clock1, stationA, stationB) < 0 である場合に、 ClockPriorityJudgeFunction(clock2, stationA, stationB) > 0 となることは問題ありません。

列挙型

エラーの発生状態を表します。

列挙型の値:
ErrorType_Nothing 

エラーはありません。

ErrorType_EventDropped 

イベントの管理に不整合が生じました。一部のイベントが通知されなかった可能性があります。 EventCloneElement を使用していた場合に発生する可能性があります。

ErrorType_ClockOverflow 

時刻の値がオーバーフローしました。全体的に値の不整合が起こっている可能性があります。

CloneProtocol の動作状態を表します。

列挙型の値:
State_Inactive 

動作中ではありません。

State_Start 

開始処理中です。

State_Active 

動作中です。

State_Stop 

終了処理中です。

関数

void nn::pia::clone::CloneProtocol::Finalize ( )

終了処理を行います。

参照
Initialize
int nn::pia::clone::CloneProtocol::GetAckBufferUsedNumMax ( ) const
inline

通信中に実際に使用された Ack 用バッファ数の最大値を取得します。

この値は再初期化時に 0 にリセットされます。

戻り値
通信中に実際に使用された Ack 用バッファ数の最大値です。
ClockValue nn::pia::clone::CloneProtocol::GetClock ( ) const

現在の時刻を取得します。

戻り値
現在の時刻です。動作中でない時など有効な時刻が存在しない場合は InvalidClock を返します。
参照
UpdateClock
uint32_t nn::pia::clone::CloneProtocol::GetElementSizeMax ( ) const
inline

使用するクローンエレメントの SerializePolicy::GetSerializedSize() で定義できる値の最大値を取得します。

この値より大きなクローンエレメントを登録してあるクローンを RegisterXXXClone() に渡すと、 ResultInvalidArgument が返ります。

この値は 1 パケットに収めることのできる最大サイズです。 使用する通信モジュールやそこで設定する MTU の設定によって値が変わります。 この値は、CloneProtocol::Initialize() 以降取得することができます。

戻り値
使用するクローンエレメントの SerializePolicy::Size で指定できる値の最大値です。
ErrorType nn::pia::clone::CloneProtocol::GetError ( ) const
inline

エラーの発生状態を取得します。

エラーが発生した場合は、送受信している値に不整合が起こっている可能性がありますので、 ゲームを無効として CloneProtocol::Stop() で終了させることを推奨します。 再び CloneProtocol::Start() を呼び出した際にこの値はリセットされます。 複数の種類のエラーが発生した場合は、CloneProtocol::ErrorType の値の大きい方が優先されます。

戻り値
エラーの発生状態です。
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestReceiveCount ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に受信した CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に受信した CloneProtocol メッセージの個数です。 受信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestReceiveSize ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に受信した CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に受信した CloneProtocol メッセージのサイズ(バイト)です。 受信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendCount ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージの個数です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendNoCompressedSize ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージの圧縮前のサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージの圧縮前のサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendSize ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信した CloneProtocol メッセージのサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendSystemCount ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信したシステム用 CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信したシステム用 CloneProtocol メッセージの個数です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendSystemSize ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信したシステム用 CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間に送信したシステム用 CloneProtocol メッセージのサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendUnicastCount ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間にユニキャストで送信した CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間にユニキャストで送信した CloneProtocol メッセージの個数です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledLatestSendUnicastSize ( StationIndex  stationIndex) const

直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間にユニキャストで送信した CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
直近の CloneProfiler::LATEST_BUFFER_SIZE 回の common::Scheduler::Dispatch の間にユニキャストで送信した CloneProtocol メッセージのサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalReceiveCount ( StationIndex  stationIndex) const

ResetProfiler 以降に受信した CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に受信した CloneProtocol メッセージの個数です。 受信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalReceiveSize ( StationIndex  stationIndex) const

ResetProfiler 以降に受信した CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に受信した CloneProtocol メッセージのサイズ(バイト)です。 受信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendCount ( StationIndex  stationIndex) const

ResetProfiler 以降に送信した CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に送信した CloneProtocol メッセージの個数です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendNoCompressedSize ( StationIndex  stationIndex) const

ResetProfiler 以降に送信した CloneProtocol メッセージの圧縮前のサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に送信した CloneProtocol メッセージの圧縮前のサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendSize ( StationIndex  stationIndex) const

ResetProfiler 以降に送信した CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に送信した CloneProtocol メッセージのサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendSystemCount ( StationIndex  stationIndex) const

ResetProfiler 以降に送信したシステム用 CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に送信したシステム用 CloneProtocol メッセージの個数です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendSystemSize ( StationIndex  stationIndex) const

ResetProfiler 以降に送信したシステム用 CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降に送信したシステム用 CloneProtocol メッセージのサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendUnicastCount ( StationIndex  stationIndex) const

ResetProfiler 以降にユニキャストで送信した CloneProtocol メッセージの個数を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降にユニキャストで送信した CloneProtocol メッセージの個数です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetProfiledTotalSendUnicastSize ( StationIndex  stationIndex) const

ResetProfiler 以降にユニキャストで送信した CloneProtocol メッセージのサイズ(バイト)を取得します。

引数
[in]stationIndexプロファイリング対象の StationIndex です。
戻り値
ResetProfiler() 以降にユニキャストで送信した CloneProtocol メッセージのサイズ(バイト)です。 送信プロファイリング管理オブジェクトが設定されていない場合は 0xFFFFFFFF を返します。
参照
SetProfiler, ResetProfiler
const CloneProfilerBase* nn::pia::clone::CloneProtocol::GetReceiveProfiler ( ) const
inline

設定されている受信プロファイリング管理オブジェクトを取得します。

戻り値
設定されている受信プロファイリング管理オブジェクトです。設定されていない場合は NULL を返します。
参照
SetProfiler
uint32_t nn::pia::clone::CloneProtocol::GetSendPeriod ( ) const
inline

CloneProtocol::SetSendPeriod() で指定した送信間隔の設定値を取得します。

戻り値
送信間隔の設定値です。
const CloneProfilerBase* nn::pia::clone::CloneProtocol::GetSendProfiler ( ) const
inline

設定されている送信プロファイリング管理オブジェクトを取得します。

戻り値
設定されている送信プロファイリング管理オブジェクトです。設定されていない場合は NULL を返します。
参照
SetProfiler
State nn::pia::clone::CloneProtocol::GetState ( ) const
inline

現在の動作状態を取得します。

戻り値
現在の動作状態です。
Result nn::pia::clone::CloneProtocol::Initialize ( const Setting setting)

初期化します。 clone::BeginSetup()clone::EndSetup() 間で呼び出す必要があります。

引数
[in]setting各種設定情報です。 すべてのステーション間で、同じ値を設定する必要があります。異なる値を設定した場合の動作は不定です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultAlreadyInitialized 既に初期化されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

参照
Finalize
bool nn::pia::clone::CloneProtocol::IsActiveStation ( StationId  stationId) const

指定したステーションの CloneProtocol が動作中かどうかを判定します。

引数
[in]stationId動作中かどうかを調べたいステーションの StationId です。
戻り値
指定したステーションが動作中なら true を返します。
bool nn::pia::clone::CloneProtocol::IsRegulatingClock ( ) const

時刻の調整を実行中かどうかを取得します。

戻り値
時刻の調整を実行中なら true を返します。
参照
RegulateClock
Result nn::pia::clone::CloneProtocol::RegisterAtomicSharingClone ( AtomicSharingClone pClone,
CloneBase::Id  cloneId 
)
inline

AtomicSharingClone を指定の ID に登録します。

引数
[in]pClone登録する AtomicSharingClone です。
[in]cloneId登録する ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultAlreadyExists 指定された ID には既に登録されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::RegisterReceiveClone ( ReceiveClone pClone,
StationIndex  sendStationIndex,
CloneBase::Id  cloneId 
)

ReceiveClone を指定の ID に登録します。

引数
[in]pClone登録する ReceiveClone です。
[in]sendStationIndex送信側の SendClone のある StationIndex です。
[in]cloneId登録する ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultAlreadyExists 指定された ID には既に登録されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::RegisterSendClone ( SendClone pClone,
CloneBase::Id  cloneId 
)
inline

SendClone を指定の ID に登録します。

引数
[in]pClone登録する SendClone です。
[in]cloneId登録する ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultAlreadyExists 指定された ID には既に登録されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::RegisterSequentialSharingClone ( SequentialSharingClone pClone,
CloneBase::Id  cloneId 
)
inline

SequentialSharingClone を指定の ID に登録します。

引数
[in]pClone登録する SequentialSharingClone です。
[in]cloneId登録する ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultAlreadyExists 指定された ID には既に登録されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::RegulateClock ( )

時刻の再調整を開始します。

このステーションの CloneProtocol の管理する時刻を、他のステーションの平均的な時刻にそろえるように再調整します。 他のステーションの時刻を調べた後、通常より高速/低速に時刻を進めることにより誤差を修正します。 どの程度高速/低速に進めるかは CloneProtocol::Initialize() 時に指定する CloneProtocol::Setting::clockRegulationRate で指定する必要があります。 CloneProtocol::Setting::clockTypeCloneProtocol::Setting::ClockType_Rtc を指定した場合は、同期通信を長時間継続していると、端末間の時刻のずれが 10 時間で数秒程度大きくなる可能性があります。長時間の同期通信を行う場合は、この関数を定期的に呼び出すことを検討してください。

戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:
ResultInvalidState State_Active でないか、既に調整を実行中です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
参照
IsRegulatingClock
void nn::pia::clone::CloneProtocol::ResetProfiler ( )

送受信のプロファイリングされた結果をリセットします。

参照
SetProfiler
AtomicSharingClone* nn::pia::clone::CloneProtocol::SearchAtomicSharingClone ( CloneBase::Id  cloneId)
inline

指定した ID の AtomicSharingClone を検索して取得します。

引数
[in]cloneId検索する AtomicSharingClone の ID です。
戻り値
指定された ID の AtomicSharingClone です。指定した ID のものが無い場合は、NULL を返します。
const AtomicSharingClone* nn::pia::clone::CloneProtocol::SearchAtomicSharingClone ( CloneBase::Id  cloneId) const
inline

指定した ID の AtomicSharingClone を検索して取得します。

引数
[in]cloneId検索する AtomicSharingClone の ID です。
戻り値
指定された ID の AtomicSharingClone です。指定した ID のものが無い場合は、NULL を返します。
ReceiveClone* nn::pia::clone::CloneProtocol::SearchReceiveClone ( StationIndex  sendStationIndex,
CloneBase::Id  cloneId 
)

指定した ID の ReceiveClone を検索して取得します。

引数
[in]sendStationIndex送信側の SendClone のある StationIndex です。
[in]cloneId検索する ReceiveClone の ID です。
戻り値
指定された ID の ReceiveClone です。指定した ID のものが無い場合は、NULL を返します。
const ReceiveClone* nn::pia::clone::CloneProtocol::SearchReceiveClone ( StationIndex  sendStationIndex,
CloneBase::Id  cloneId 
) const

指定した ID の ReceiveClone を検索して取得します。

引数
[in]sendStationIndex送信側の SendClone のある StationIndex です。
[in]cloneId検索する ReceiveClone の ID です。
戻り値
指定された ID の ReceiveClone です。指定した ID のものが無い場合は、NULL を返します。
SendClone* nn::pia::clone::CloneProtocol::SearchSendClone ( CloneBase::Id  cloneId)
inline

指定した ID の SendClone を検索して取得します。

引数
[in]cloneId検索する SendClone の ID です。
戻り値
指定された ID の SendClone です。指定した ID のものが無い場合は、NULL を返します。
const SendClone* nn::pia::clone::CloneProtocol::SearchSendClone ( CloneBase::Id  cloneId) const
inline

指定した ID の SendClone を検索して取得します。

引数
[in]cloneId検索する SendClone の ID です。
戻り値
指定された ID の SendClone です。指定した ID のものが無い場合は、NULL を返します。
SequentialSharingClone* nn::pia::clone::CloneProtocol::SearchSequentialSharingClone ( CloneBase::Id  cloneId)
inline

指定した ID の SequentialSharingClone を検索して取得します。

引数
[in]cloneId検索する SequentialSharingClone の ID です。
戻り値
指定された ID の SequentialSharingClone です。指定した ID のものが無い場合は、NULL を返します。
const SequentialSharingClone* nn::pia::clone::CloneProtocol::SearchSequentialSharingClone ( CloneBase::Id  cloneId) const
inline

指定した ID の SequentialSharingClone を検索して取得します。

引数
[in]cloneId検索する SequentialSharingClone の ID です。
戻り値
指定された ID の SequentialSharingClone です。指定した ID のものが無い場合は、NULL を返します。
Result nn::pia::clone::CloneProtocol::SetClockOverFlowSpanForDebug ( uint32_t  span)

(デバッグ用)時刻の値がオーバーフローするまでの期間を設定します。

同期通信を開始してから、時刻の値がオーバーフローするまでの期間を設定します。

本関数はデバッグ用です。製品には組み込まないよう、注意してください。

引数
[in]spanCloneProtocol::Setting::ClockTypeCloneProtocol::Setting::ClockType_Rtc の場合は、時間(単位は秒)、CloneProtocol::Setting::ClockType_Frame の場合は、フレーム数です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:
ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
Result nn::pia::clone::CloneProtocol::SetProfiler ( CloneProfilerBase pSendProfiler,
CloneProfilerBase pReceiveProfiler 
)

送受信のプロファイリング管理オブジェクトを設定します。

CloneProfiler を設定すると、 CloneProtocol が行った送受信をプロファイリングできます。 ここでの計測は、この CloneProtocol が実際に通信路に送信し、通信路から受信したものが計上されます。 クローンのプロファイリングでは自ステーション内での送受信も計上されますが、 それらは CloneProtocol 内で解決されるため、 CloneProtocol でのプロファイリングには計上されません。

圧縮を有効にしていた場合、計測されるサイズは圧縮された状態でのサイズです。

引数に NULL を指定すると、既に設定してある CloneProfiler を解除する事ができます。

引数
[in]pSendProfiler送信のプロファイリングを管理する CloneProfiler を指定します。 必要ない場合は NULL を指定する必要があります。
[in]pReceiveProfiler受信のプロファイリングを管理する CloneProfiler を指定します。 必要ない場合は NULL を指定する必要があります。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::SetResendSpanRatio ( float  rttRatio)

計測して求めた基準となる RTT(ミリ秒) に対する再送間隔の比率を指定します。

RTT に対する再送間隔の比率のデフォルト値は 1.25 です。再送間隔は、(RTT * rttRatio + (送信間隔 + 1) * 1 フレームに相当する時間) となります。1 フレームに相当する時間は、CloneProtocol::UpdateClock() の呼び出し間隔に基づいて内部で計測されます。再送間隔の最大値は、2500 ms です。

引数
[in]rttRatio計測して求めた基準となる RTT(ミリ秒) に対する、再送間隔の比率です。0 より大きい値を指定する必要があります。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が誤っています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::SetSendPeriod ( uint32_t  sendPeriod)

送信間隔を設定します。

ここで指定した回数 CloneProtocol::UpdateClock() が呼び出されるたびに、common::Scheduler::Dispatch() 呼び出し時に送信処理が行われます。1 以上の値を指定する必要があります。

引数
[in]sendPeriod設定する送信間隔です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:
ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
Result nn::pia::clone::CloneProtocol::Start ( )

CloneProtocol の動作を開始します。

通信開始後、CloneProtocol::State_Inactive の時に呼び出すことができます。 成功すると CloneProtocol::State_Start に遷移して開始処理を行った後、 CloneProtocol::State_Active に遷移します。 この呼び出し以降、定期的に CloneProtocol::UpdateClock() を呼ぶ必要があります。

戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:
ResultInvalidState 通信中でないか、State_Inactive ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
Result nn::pia::clone::CloneProtocol::Stop ( )

CloneProtocol の動作を終了します。

CloneProtocol::State_Start または CloneProtocol::State_Active の時に呼び出すと CloneProtocol::State_Stop に遷移し、終了処理の完了後に CloneProtocol::State_Inactive に遷移します。 CloneProtocol::State_Stop の間は、まだ CloneProtocol::UpdateClock() を呼び続ける必要があります。 CloneProtocol::State_Inactive, CloneProtocol::State_Stop の時に呼び出しても何も起こりません。

戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:
ResultInvalidState 通信中ではありません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。
virtual void nn::pia::clone::CloneProtocol::Trace ( uint64_t  flag) const
virtual

デバッグに有用な情報をプリントします。

引数
[in]flagトレースフラグの論理和。詳細は TraceFlag 型を参照してください。

nn::pia::transport::Protocolを再定義しています。

Result nn::pia::clone::CloneProtocol::UnregisterAtomicSharingClone ( AtomicSharingClone pClone)
inline

AtomicSharingClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても pClone->IsRegisteredWithProtocol() が false になるまで pClone を使いまわしたり同じ ID に再登録したりできません。 (ステーションの不正切断時の代理送信等のため、送信権を取得していなくても送信を行う事があります。)

引数
[in]pClone登録解除する AtomicSharingClone です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。この CloneProtocol に登録されていない AtomicSharingClone が指定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterAtomicSharingClone ( CloneBase::Id  cloneId)
inline

AtomicSharingClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても登録解除した AtomicSharingClone::IsRegisteredWithProtocol() が false になるまで その AtomicSharingClone を使いまわしたり同じ ID に再登録したりできません。 (ステーションの不正切断時の代理送信等のため、送信権を取得していなくても送信を行う事があります。)

引数
[in]cloneId登録解除する AtomicSharingClone の ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNotSet 指定された ID には登録されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterReceiveClone ( ReceiveClone pClone)
inline

ReceiveClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても pClone->IsRegisteredWithProtocol() が false になるまで pClone を使いまわしたり同じ ID に再登録したりできません。 (ステーションの不正切断時の代理送信等のため ReceiveClone も送信を行う事があります。)

引数
[in]pClone登録解除する ReceiveClone です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。この CloneProtocol に登録されていない ReceiveClone が指定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterReceiveClone ( StationIndex  sendStationIndex,
CloneBase::Id  cloneId 
)

ReceiveClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても登録解除した ReceiveClone::IsRegisteredWithProtocol() が false になるまで その ReceiveClone を使いまわしたり同じ ID に再登録したりできません。 (ステーションの不正切断時の代理送信等のため ReceiveClone も送信を行う事があります。)

引数
[in]sendStationIndex送信側の SendClone のある StationIndex です。
[in]cloneId登録解除する ReceiveClone の ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNotSet 指定された ID には登録されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterSendClone ( SendClone pClone)
inline

SendClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても pClone->IsRegisteredWithProtocol() が false になるまで pClone を使いまわしたり同じ ID に再登録したりできません。

引数
[in]pClone登録解除する SendClone です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。この CloneProtocol に登録されていない SendClone が指定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterSendClone ( CloneBase::Id  cloneId)
inline

SendClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても登録解除した SendClone::IsRegisteredWithProtocol() が false になるまで その SendClone を使いまわしたり同じ ID に再登録したりできません。

引数
[in]cloneId登録解除する SendClone の ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNotSet 指定された ID には登録されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterSequentialSharingClone ( SequentialSharingClone pClone)
inline

SequentialSharingClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても pClone->IsRegisteredWithProtocol() が false になるまで pClone を使いまわしたり同じ ID に再登録したりできません。

引数
[in]pClone登録解除する SequentialSharingClone です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。この関数がエラーを返さないようにアプリケーションを実装する必要があります。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultInvalidArgument 引数が不正です。この CloneProtocol に登録されていない AtomicSharingClone が指定されています。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

Result nn::pia::clone::CloneProtocol::UnregisterSequentialSharingClone ( CloneBase::Id  cloneId)
inline

SequentialSharingClone を登録解除します。

送信途中のものがある場合は送信しきってから登録解除されます。 そのため、この関数が成功したとしても登録解除した SequentialSharingClone::IsRegisteredWithProtocol() が false になるまで その SequentialSharingClone を使いまわしたり同じ ID に再登録したりできません。

引数
[in]cloneId登録解除する SequentialSharingClone の ID です。
戻り値
成功すれば、IsSuccess() が true を返す Result が返されます。
返るエラーの一覧:

ResultNotInitialized 初期化されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

ResultNotSet 指定された ID には登録されていません。プログラミングエラーです。このエラーが返らないようにソースコードを修正してください。

void nn::pia::clone::CloneProtocol::UpdateClock ( )

時刻を 1 フレーム進めます。

この関数を呼びだした時だけ CloneProtocol の管理する時刻は進みます。 CloneProtocol::State_Start, CloneProtocol::State_Active, CloneProtocol::State_Stop のいずれかの間は定期的に呼び出す必要があります。 呼び出しに対してどれだけの時刻が進むかは、CloneProtocol::Initialize() 時に指定する CloneProtocol::Setting で指定する必要があります。 時刻の値の精度に対して呼び出し間隔が短い場合は時刻が変わらない場合がありますが、遡ることはありません。

参照
GetClock