CTR NEX API Reference
nn::nex::JoinSessionOperation クラスabstract

このセッション操作は、ステーションがセッションに参加するときに実行されます。 [詳解]

#include <NetZ/src/Core/DOCore/JoinSessionOperation.h>

+ nn::nex::JoinSessionOperation の継承関係図

公開型

enum  ApprovalState {
  Unknown,
  Pending,
  Approved,
  Denied
}
 GetApprovalStateの戻り値の列挙体です [詳解]
 
enum  Type {
  ChangeMasterStation,
  ChangeDupSet,
  FaultRecovery,
  AddToStore,
  RemoveFromStore,
  CallMethod,
  UpdateDataSet,
  JoinSession,
  JoinStation,
  LeaveStation
}
 システムから呼び出される操作の種類を表す列挙体です。 [詳解]
 

公開メンバ関数

void Approve ()
 セッションへの参加要求を承認します。 [詳解]
 
void Deny (const qResult &rOutcome=qResult(QERROR(DOCore, JoinDenied)))
 セッションへの参加要求を拒否します。 [詳解]
 
JoinSessionOperation::ApprovalState GetApprovalState ()
 現在のセッションに対する参加要求の承認ステータスを取得します。 [詳解]
 
virtual const qCharGetClassNameString () const =0
 この操作オブジェクトのクラス名称を取得します。 [詳解]
 
const StationGetJoiningStation () const
 参加しているステーションへのポインタを取得します。 [詳解]
 
virtual Type GetType () const =0
 この操作オブジェクトの種類を返します。 [詳解]
 
UserContext GetUserData ()
 ユーザー定義値を取得します。 [詳解]
 
void PostponeDecision (TimeInterval tiPostponeDelay)
 セッションへの参加要求の決定を保留します。 [詳解]
 
void SetUserData (UserContext uUserData)
 ユーザー定義値を設定します。 [詳解]
 

静的公開メンバ関数

static SpecificOperation * DynamicCast (Operation *pOperation)
 ランタイム情報を用いた動的キャストを行います。 [詳解]
 
static void SetTraceFilter (qBool(*pfTraceFilter)(const Operation *))
 操作オブジェクトのトレース実行をどのタイミングで実行するかを指定するためのコールバック関数を設定します。 [詳解]
 

詳解

このセッション操作は、ステーションがセッションに参加するときに実行されます。

ステーション(Station)がセッション(Session)に参加しようとしたときに、 JoinApprovalコールバック(Session::RegisterJoinApprovalCallback())が呼び出され、 その要求を受け入れるか拒否するかを決定することが出来ます。もしセッションへ受け入れるときは、 JoinSessionOperationが実行され、受け入れを拒否するときは、何の操作も実行されずに、 参加しようとしているステーションに対してセッションへの参加が拒否されたことを通知するメッセージが送られます。 JoinApprovalコールバックとその後に続いて実行されるJoinSessionOperationは接続しようとしている ステーションの接続点のステーションによって呼び出されます。

ステーションがセッションに参加しようとしたとき、以下の流れでイベントが発生します。

  • JoinApprovalコールバックが実行されます。
  • もしもコールバックがApproveを返したとき、
    • SessionOperation::Begin()が呼び出されます。
    • Session オブジェクトはStationDuplicatedObject::Publish() し、Station::State はJoiningSessionに変化します。
    • 接続点のステーションは参加しようとしているステーションに対して参加リクエストは受理されたことを確認するためのメッセージを送ります
    • 新しいStation オブジェクトの複製マスターは参加しようとしているステーションにマイグレーション(複製オブジェクトのコントロール権転移)を行います
    • SessionOperation::End()が呼び出されます。
  • もしもコールバックがDenyを返したときは、接続点が参加拒否を参加しようとしているステーションに伝えます。

列挙型メンバ詳解

GetApprovalStateの戻り値の列挙体です

列挙値
Unknown 

承認ステータスは不明な状態です

Pending 

セッションへの参加を承認するか拒否するかをPostponeDecision によって保留しています。

Approved 

セッションへの参加は承認されました。

Denied 

セッションへの参加は拒否されました。

enum nn::nex::Operation::Type
inherited

システムから呼び出される操作の種類を表す列挙体です。

参照
GetType
列挙値
ChangeMasterStation 

ChangeMasterStationOperation クラスのインスタンスであるときに、この列挙値になります。

ChangeDupSet 

ChangeDupSetOperation クラスのインスタンスであるときに、この列挙値になります。

FaultRecovery 

FaultRecoveryOperation クラスのインスタンスであるときに、この列挙値になります。

AddToStore 

AddToStoreOperation クラスのインスタンスであるときに、この列挙値になります。

RemoveFromStore 

RemoveFromStoreOperation クラスのインスタンスであるときに、この列挙値になります。

CallMethod 

CallMethodOperation クラスのインスタンスであるときに、この列挙値になります。

UpdateDataSet 

UpdateDataSetOperation クラスのインスタンスであるときに、この列挙値になります。

JoinSession 

JoinSessionOperation クラスのインスタンスであるときに、この列挙値になります。

JoinStation 

JoinStationOperation クラスのインスタンスであるときに、この列挙値になります。

LeaveStation 

LeaveStationOperation クラスのインスタンスであるときに、この列挙値になります。

関数詳解

JoinSessionOperation::ApprovalState nn::nex::JoinSessionOperation::GetApprovalState ( )

現在のセッションに対する参加要求の承認ステータスを取得します。

参加要求の承認ステータスは、これをJoinApprovalコールバックではじめて呼び出したときはUnknownとなります。 そして、PostponeDecision によって保留した場合はPendingとなります。

戻り値
現在のセッションに対する参加要求の承認ステータスを返します。
void nn::nex::JoinSessionOperation::Approve ( )

セッションへの参加要求を承認します。

この関数がJoinApprovalの中で呼び出されたとき、ApprovalStateはApprovedに変化します。 JoinApprovalコールバックが登録されていないか、コールバックの中でApproveDeny も呼ばなかった場合、 デフォルトとして承認されたこととなります。

void nn::nex::JoinSessionOperation::Deny ( const qResult rOutcome = qResult(QERROR(DOCore, JoinDenied)))

セッションへの参加要求を拒否します。

この関数がJoinApprovalの中で呼び出されたとき、ApprovalStateはDeniedに変化します。 JoinApprovalコールバックが登録されていないか、コールバックの中でApproveDeny も呼ばなかった場合、 デフォルトとして承認されたこととなります。

引数
[in]rOutcome拒否したエラーコードの値を指定します(オプション)。
void nn::nex::JoinSessionOperation::PostponeDecision ( TimeInterval  tiPostponeDelay)

セッションへの参加要求の決定を保留します。

この関数がJoinApprovalコールバックの中で呼び出されたとき、セッションへの参加は遅延されます。 もしも決定を保留する場合、決定のためのコンテキストはOperation::SetUserData() によってアタッチすることができます。

引数
[in]tiPostponeDelay保留するための遅延時間をミリ秒単位で指定します。
const Station* nn::nex::JoinSessionOperation::GetJoiningStation ( ) const

参加しているステーションへのポインタを取得します。

戻り値
参加しているステーションへのポインタが返ります。
virtual Type nn::nex::Operation::GetType ( ) const
pure virtualinherited

この操作オブジェクトの種類を返します。

戻り値
この操作オブジェクトインスタンスの種類が返ります。
UserContext nn::nex::Operation::GetUserData ( )
inherited

ユーザー定義値を取得します。

ユーザー定義データは、DataSet::OperationBegin または DuplicatedObject::OperationBegin 関数にて設定(SetUserData)し、 DataSet::OperationEnd またはDuplicatedObject::OperationEnd 関数にて この関数を通じて呼び出して使用するために用意されています。

戻り値
SetUserData でこの操作に設定されたユーザー定義値が返ります。
参照
SetUserData
void nn::nex::Operation::SetUserData ( UserContext  uUserData)
inherited

ユーザー定義値を設定します。

ユーザー定義値は、qUnsignedInt32qReal か、 何かしらのオブジェクトへのポインタです。この関数は、 DataSet::OperationBegin またはDuplicatedObject::OperationBegin 関数にて 呼び出し、ユーザー定義値をセットしたあと、 DataSet::OperationEnd またはDuplicatedObject::OperationEnd 関数にて GetUserData 関数を呼び出してユーザー定義値を取り出して利用することが出来ます。

virtual const qChar* nn::nex::Operation::GetClassNameString ( ) const
pure virtualinherited

この操作オブジェクトのクラス名称を取得します。

戻り値
クラス名称へのポインタが返ります。
static SpecificOperation* nn::nex::Operation::DynamicCast ( Operation pOperation)
staticinherited

ランタイム情報を用いた動的キャストを行います。

この関数はNetZの動的情報を用いて、C++のdynamic_castに相当する機能を提供します。 Operationクラスとその派生クラスのみに利用することが可能です。 この機能を利用するためにRTTIを有効にする必要はありません。

この関数を呼び出すには、キャストしたい対象のクラスにある静的関数を呼び出します。 たとえば、Operation型のポインタpOperationを、AddToStoreOperation 型の ポインタに動的変換するためには、AddToStoreOperation::DynamicCast 関数を利用します。

引数
[in]pOperation変換元の操作オブジェクトへのポインタを指定します。
戻り値
動的キャストされたポインタが返ります。
戻り値一覧:
NULL 指定されたpOperationがNULLである場合、 あるいは、pOperationがキャスト対象のクラスインスタンスではなかったときに返ります。
static void nn::nex::Operation::SetTraceFilter ( qBool(*)(const Operation *)  pfTraceFilter)
staticinherited

操作オブジェクトのトレース実行をどのタイミングで実行するかを指定するためのコールバック関数を設定します。

これで指定されたコールバック関数は、システム側から呼びだされ、 TraceLog でトレースすべき操作かどうかを指定します。 指定されたコールバック関数は、トレース対象となっている操作オブジェクトのポインタとともに 呼び出され、qBool値を返します。これがtrueであればトレースを行い、 falseであればトレースを行いません。

TraceLogにトレースフラグをセットしたあとで、 この関数を利用して操作ごとのフィルタコールバックを設定します。 もしなにも設定されていなければ、 CoreDO(システム側で自動的に用意される複製オブジェクト。たとえばStation, Session など。)を 除くすべての複製オブジェクト(つまり、UserDO)に対してトレースが行われるように設定されます。

引数
[in]pfTraceFilterトレースフィルタ用のコールバック関数を指定します。
参照
DuplicatedObject::IsACoreDO, DuplicatedObject::IsAUserDO