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

このSessionOperationはステーションがセッションから離脱するときに実行されます。 [詳解]

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

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

公開型

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

公開メンバ関数

virtual const qCharGetClassNameString () const =0
 この操作オブジェクトのクラス名称を取得します。 [詳解]
 
const StationGetLeavingStation () const
 セッションから離脱しているステーションへのポインタを取得します。 [詳解]
 
virtual Type GetType () const =0
 この操作オブジェクトの種類を返します。 [詳解]
 
UserContext GetUserData ()
 ユーザー定義値を取得します。 [詳解]
 
void SetUserData (UserContext uUserData)
 ユーザー定義値を設定します。 [詳解]
 

静的公開メンバ関数

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

詳解

このSessionOperationはステーションがセッションから離脱するときに実行されます。

LeaveSessionOperationはステーション(Station)がセッション(Session)から離脱するときに 発生します(離脱意志を持って離脱した場合も、障害発生も同様)。 この操作は、離脱しようとしているステーションのStation オブジェクトの複製マスター (DuplicatedObject::IsADuplicationMaster())のみが呼び出すことが出来ます。 したがって、もしもStation が自発的にSession を抜けたばあい、この操作は 離れようとしているStation が、プレイヤーの切断意思が通知されたタイミングで実行されます。

一方で、もしも障害が発生したときは、操作は障害が発生したStation オブジェクトが、他のステーションに マイグレート(複製オブジェクトのコントロール権転移)が発生した先で実行されます。 これは、システムが内部的にStation オブジェクトを削除される前にクリーンナップをするためです。

StationSession から離れるとき、以下の流れに従ってイベントが発生します。

・離れているStation が複製マスターストアからRemoveFromStoreOperation によって取り除かれます
・SessionOperation::Begin()が呼び出されます。
・離れたStation が確かにSession に存在しないことを確認するために内部的なクリーンナップ処理が行われます。
・SessionOperation::End()が呼び出されます。

LeaveSessionOperationはひとつのStation に対してのみ実行されます。 したがって、もしもこの方法を、障害のためにセッションを離脱したすべてのステーションに対して行いたいときは、 ChangeMasterStationOperation によって離れているStation オブジェクトを捕らえるべきです。

列挙型メンバ詳解

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 クラスのインスタンスであるときに、この列挙値になります。

関数詳解

const Station* nn::nex::LeaveSessionOperation::GetLeavingStation ( ) 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