CTR NEX API Reference
nn::nex::MigrationContext クラス

このクラスはマイグレーション呼び出しのための非同期管理機能を提供します。 [詳解]

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

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

公開型

typedef void(* CompletionCallback) (CallContext *, const UserContext *)
 CompletionCallback を定義します。 [詳解]
 
enum  Flags {
  SynchronousCall = CallContext::FirstFlagAvailable,
  TargetObjectMustBeMaster = (CallContext::FirstFlagAvailable<<1),
  TargetObjectMustHaveAuthority = (CallContext::FirstFlagAvailable<<2),
  RetryOnTargetValidationFailure = (CallContext::FirstFlagAvailable<<3),
  CallOnDuplicas = (CallContext::FirstFlagAvailable<<4),
  CallOnMaster = (CallContext::FirstFlagAvailable<<5),
  CallOnTargetStation = (CallContext::FirstFlagAvailable<<6),
  CallOnNeighbouringStations = (CallContext::FirstFlagAvailable<<7),
  CallOnLocalStation = (CallContext::FirstFlagAvailable<<8)
}
 DOCallContext に使用可能な各種フラグを列挙します。 [詳解]
 
enum  Outcome {
  UnknownOutcome = QERROR(Core, Unknown),
  Success = QSUCCESS(DOCore, Success),
  ErrorStationNotReached = QERROR(DOCore, StationNotReached),
  ErrorTargetStationDisconnect = QERROR(DOCore, TargetStationDisconnect),
  ErrorLocalStationLeaving = QERROR(DOCore, LocalStationLeaving),
  ErrorObjectNotFound = QERROR(DOCore, ObjectNotFound),
  ErrorInvalidRole = QERROR(DOCore, InvalidRole),
  ErrorCallTimeout = QERROR(DOCore, CallTimeout),
  ErrorRMCDispatchFailed = QERROR(DOCore, RMCDispatchFailed),
  ErrorMigrationInProgress = QERROR(DOCore, MigrationInProgress),
  ErrorInvalidParameters = QERROR(Core, InvalidArgument),
  ErrorAccessDenied = QERROR(Core, AccessDenied),
  ErrorNoAuthority = QERROR(DOCore, NoAuthority),
  NoTargetStationSpecified = QERROR(DOCore, NoTargetStationSpecified),
  CallPostponed = QSUCCESS(DOCore, CallPostponed),
  ErrorReliableSendBufferFull = QERROR(Transport, ReliableSendBufferFull),
  ErrorInvalidSubStreamID = QERROR(Transport, InvalidSubStreamID),
  ErrorPacketBufferFull = QERROR(Transport, PacketBufferFull)
}
 この列挙体は、呼び出しの結果を表します。 [詳解]
 
enum  State {
  Available,
  CallInProgress,
  CallSuccess,
  CallFailure,
  CallCancelled
}
 CallContext の状態を列挙します。 [詳解]
 
enum  Type {
  RMC,
  FetchCall,
  MigrationCall
}
 呼び出し種類を示すための列挙体です。 [詳解]
 

公開メンバ関数

 MigrationContext (qBool bSynchronousCall=true)
 オブジェクトを初期化します。 [詳解]
 
RefCountedObjectAcquireRef ()
 参照カウントを 1 増加させます。
 
qBool Cancel (State eNewState=CallCancelled)
 この呼び出しは、DOCallContextが削除された場合に自動的にキャンセルされます。 [詳解]
 
qBool Cancel ()
 この CallContext に関連付けられている非同期処理をキャンセルします。 [詳解]
 
void ClearFlag (qUnsignedInt32 uiFlag)
 SetFlag を使用して設定されたフラグをクリアします。 [詳解]
 
void ClearTargets ()
 このDOCallContextに前に設定されていた対象のステーション情報を消去します。 [詳解]
 
qBool FlagIsSet (qUnsignedInt32 uiFlag) const
 特定のフラグが設定されているかどうかを返します。 [詳解]
 
virtual qBool FlagsAreValid () const
 フラグ(Flags)の組み合わせが正しいかどうかを取得します。 [詳解]
 
DOHandle GetMigratingObject ()
 マイグレーションを行っている複製オブジェクトへのハンドルを取得します。 [詳解]
 
DOCallContext::Outcome GetOutcome () const
 非同期処理の結果を DOCallContext::Outcome として取得します。 [詳解]
 
State GetState () const
 CallContext の現在の状態を返します。 [詳解]
 
SubStreamID GetSubStreamID () const
 Reliable通信の場合に、送信時に使うSubStreamIDを取得します。 [詳解]
 
DOHandle GetTargetStation ()
 呼び出し対象のステーションを取得します。 [詳解]
 
const UserContextGetUserContext (size_t iIndex) const
 この CallContext に関連付けられている UserContext を返します。 [詳解]
 
void RegisterCompletionCallback (CompletionCallback pfCompletionCallback, const UserContext &oContext, qBool bAddToEnd=true)
 この CallContext の完了時に実行するコールバック関数を設定します。 [詳解]
 
void RegisterCompletionCallback (CallbackRoot *pCallback, qBool bCallOnSuccess=true, qBool bAddToEnd=true)
 この CallContext の完了時に実行するコールバックオブジェクトを設定します。 [詳解]
 
template<typename TCallback >
void RegisterCompletionCallbackGeneric (const TCallback &callback, qBool deleteCallbackAfterCall=false, qBool bAddToEnd=true)
 この DOCallContext の完了時に実行するコールバックを設定します。 [詳解]
 
void ReleaseRef ()
 参照カウントを 1 減少させます。0 になるときに自分自身を delete します。
 
qBool Reset ()
 CallContext の状態を利用可能に再設定します。 [詳解]
 
void SetFlag (qUnsignedInt32 uiFlag)
 非同期処理に使用するフラグを設定します。 [詳解]
 
void SetSubStreamID (SubStreamID subStreamID)
 Reliable通信の場合に、送信時に使うSubStreamIDを指定します。 [詳解]
 
void SetTargetStation (DOHandle hTargetStation)
 呼び出し対象のステーションを設定します。 [詳解]
 
void SetTimeout (TimeInterval tiTimeout)
 非同期処理のタイムアウトをセットします。 [詳解]
 
void SetUserContext (size_t iIndex, const UserContext &oUserContext)
 この CallContext に関連付けられている UserContext を設定します。 [詳解]
 
qBool Wait (qUnsignedInt32 uiTimeout=WAIT_INFINITE_TIMEOUT)
 非同期処理が完了するまたはタイムアウトを越えるまで、システムを待機させます。 [詳解]
 
qBool WaitWithoutDispatch (qUnsignedInt32 uiTimeout=WAIT_INFINITE_TIMEOUT)
 非同期処理が完了する、またはタイムアウトを越えるまで待機します。 [詳解]
 

静的公開メンバ関数

static const qCharGetOutcomeString (Outcome uOutcome)
 DOCallContext::Outcome の値を該当する名前へ変換します。 [詳解]
 

詳解

このクラスはマイグレーション呼び出しのための非同期管理機能を提供します。

マイグレーションとは、複製オブジェクトのコントロール権限がステーション間で移転することを言います。

複製オブジェクトのマイグレーションを実行する前に、必ずこのクラスによって呼び出しを定義する必要があります。 このクラスを超えない範囲でフラグを設定したり、CallContext::StateDOCallContext::Outcome 関数呼び出しによる情報の取得を行うことが出来ます。 マイグレーションは、DuplicatedObject::Emigrate(MigrationContext*, DOHandle) または、 DuplicatedObject::AttemptEmigration(DOHandle) を呼び出すことで実行することが出来ます。

マイグレーションには大きく分けて二つのプロセスがあり、 最初に実行される複製オブジェクトの権限が移行するプロセスのことをエミグレーション(emigration)、 次に実行される複製オブジェクトを受け入れるプロセスをイミグレーション(immigration)と呼びます。

型定義メンバ詳解

typedef void(* nn::nex::CallContext::CompletionCallback) (CallContext *, const UserContext *)
inherited

CompletionCallback を定義します。

処理完了時に特定のユーザー定義関数が呼び出されるように、CompletionCallback を RegisterCompletionCallback() で登録します。

参照
RegisterCompletionCallback, RegisterCompletionCallback

列挙型メンバ詳解

呼び出し種類を示すための列挙体です。

列挙値
RMC 

この呼び出しはRMC(リモートメソッドコール)に対するものです。

FetchCall 

この呼び出しはデュプリカのフェッチに対するものです。

MigrationCall 

この呼び出しは複製マスターのマイグレーションに対するものです。

DOCallContext に使用可能な各種フラグを列挙します。

列挙値
SynchronousCall 

この呼び出しは同期呼び出しとなります(関数は作業をすべて終えるまで返ってきません)。

TargetObjectMustBeMaster 

この呼び出しはオブジェクトの複製マスターのみで呼び出されます。 このフラグはRMCContext のためのみに存在しています。CallOnMasterフラグが同時にセットされているときのみ有効です。 また、RetryOnTargetValidationFailureフラグと一緒に利用されることがあります。

TargetObjectMustHaveAuthority 

この呼び出しを行うとき、対象となっているオブジェクトに権限がある必要があります(DuplicatedObject::HasAuthority を参照)。 このフラグはRMCContext のためのみに存在しています。CallOnMasterフラグが同時にセットされているときのみ有効です。 また、RetryOnTargetValidationFailureフラグと一緒に利用されることがあります。

RetryOnTargetValidationFailure 

この呼び出しの結果(Outcome)が、ErrorInvalidRoleまたはErrorNoAuthorityのときに、 複製マスターに対してもう一度同一のメッセージを、Successが返ってくるか、 あるいはErrorInvalidRoleかErrorNoAuthority以外のエラーが返るまで送信し続けます。 このフラグはRMCContext のためのみに存在しています。CallOnMasterフラグと TargetObjectMustHaveAuthorityまたはTargetObjectMustBeMasterのうちどちらかがセットされているときのみ有効です。

CallOnDuplicas 

この呼び出しは、すべてのデュプリカに呼び出されます。 このフラグはRMCContext のためのみに存在しています。OneWayCallフラグも同時にセットされているときのみ有効です。 複製マスターからのみ呼び出すことができます。

CallOnMaster 

この呼び出しは、複製マスターに呼び出されます。 このフラグはRMCContext のためのみに存在しています。呼び出し対象オブジェクトが 複製マスターであると確認できた場合のみにFlagsAreValid() テストを正しく通過することが出来ます。 これを通過するためには、正しい対象の複製オブジェクトへの参照を持っている必要があります。

CallOnTargetStation 

このフラグは直接使用しないでください。SetTargetStation 関数が呼び出されたときに自動的にセットされます。

CallOnNeighbouringStations 

メソッドは、全ての近傍ステーションに対して呼び出されます。 つまり、ローカルステーションが知りうるセッション中の全ステーションに対して呼び出されます。 近傍ステーションとしてどのステーションが選択されるかは、ローカルステーションが使用する 複製スペース、あるいはその他の発見メカニズムに依存します。このフラグは RMCContext に対してのみセットすることができ、OneWayCall フラグが同時にセットされているときのみ有効です。 現在の実装は、CallOnDuplicas相当ですので、CallOnDuplicasの利用を推奨します。

CallOnLocalStation 

このメソッドはローカルステーションに対して呼び出されます。RMCContext のためだけに存在しています。

この列挙体は、呼び出しの結果を表します。

列挙値
UnknownOutcome 

この呼び出しはまだ終了していないので、結果は不明です。

Success 

この呼び出しは正常に終了しました。

ErrorStationNotReached 

この呼び出しが対象のステーションにまで到達しませんでした。

ErrorTargetStationDisconnect 

この呼び出しは実行されましたが、返答を受け取る前に対象のステーションが切断しました。

ErrorLocalStationLeaving 

この呼び出しは実行されましたが、ローカルステーションがセッションから離脱中なので、 返答メッセージは受け取りません。

ErrorObjectNotFound 

この呼び出しが呼び出されたオブジェクトが、呼び出しの対象のステーションに見つかりませんでした。

ErrorInvalidRole 

オブジェクトは見つかりましたが、期待された役割ではありませんでした。 たとえば、TargetObjectMustBeMaster フラグがセットされていたのに、 RMC(リモートメソッドコール)の対象が複製マスターではない場合にこの結果となります。

ErrorCallTimeout 

呼び出しはタイムアウトを経過したため完了しませんでした。

ErrorRMCDispatchFailed 

RMCのメソッド呼び出しが失敗しました。DDL(データ定義言語)のバージョンが、 呼び出し元と呼び出し先で競合していることが原因である可能性があります。 もしくは、呼び出し先で該当するRMCのメソッドがない可能性があります。 この結果は、RMCContext でのみ返ります。

ErrorMigrationInProgress 

オブジェクトはマイグレーション(複製オブジェクトコントロール権のステーション間移動)中です。 この結果は、MigrationContext でのみ有効です。

ErrorInvalidParameters 

呼び出しは、無効なパラメータで行われました。 文字列がDDL(データ定義言語)で指定されたサイズを超えた大きさで呼び出されたか、 フラグの組み合わせに問題がある場合などにこの結果となります。

ErrorAccessDenied 

この呼び出しは対象で拒否されました。

ErrorNoAuthority 

オブジェクトは見つかりましたが、呼び出しにTargetObjectMustHaveAuthorityフラグが ついているのに、対象のオブジェクトに権限がついていない場合に返ります。 権限についての詳細はDuplicatedObject::HasAuthority() を参照してください。

NoTargetStationSpecified 

この関数呼び出しの対象となるステーションは指定されませんでした。

CallPostponed 

この関数呼び出しは延期されました。 CallMethodOperation::PostponeOperation を経由すると、関数呼び出しは延期されます。

ErrorReliableSendBufferFull 

送信バッファが一時的にいっぱいになり、呼び出しができませんでした。

ErrorInvalidSubStreamID 

指定されたSubStreamIDが不適切で、相手と通信できません。

ErrorPacketBufferFull 

パケットバッファが不足しているため、呼び出しができませんでした。パケットバッファの設定はPacketBufferManager を参照してください。

CallContext の状態を列挙します。

非同期処理を開始すると Available から CallInProgress に遷移し、処理が終了すると CallSuccess、CallFailure、CallCancelled のいずれかの完了状態に遷移します。

列挙値
Available 

実行可能。

CallInProgress 

処理を実行中。この状態のときは他の非同期処理の Context としては使用できません。

CallSuccess 

処理が成功して終了しました。

CallFailure 

処理が失敗して終了しました。

CallCancelled 

処理がキャンセルされました。

構築子と解体子

nn::nex::MigrationContext::MigrationContext ( qBool  bSynchronousCall = true)

オブジェクトを初期化します。

デフォルトでは、マイグレーション(複製オブジェクトのコントロール間移転)は、同期実行されます。 同期実行される場合、システムはマイグレーションが終了するか、あるいはエラーが発生するまで返ってこなくなります。 DOCallContext::Wait 関数を利用することによって、非同期実行された呼び出しを終了するまで待機することが出来ます。

オブジェクトを直接指定してマイグレーションを実行する場合、DuplicatedObject::Emigrate(MigrationContext*, DOHandle) 関数を利用します。

引数
[in]bSynchronousCall同期実行するかどうかを指定します。デフォルトはtrue(同期実行する)となります。

関数詳解

DOHandle nn::nex::MigrationContext::GetMigratingObject ( )

マイグレーションを行っている複製オブジェクトへのハンドルを取得します。

複製オブジェクトハンドル(DOHandle)とは、セッション中で複製オブジェクトを一意に表す値です。 この関数によって、マイグレーション(複製オブジェクトのコントロール間移転)を行っている 複製オブジェクトへのハンドルを取得することが出来ます。

戻り値
マイグレーションを行っている複製オブジェクトへのハンドルが返ります。マイグレーション終了・失敗後には、INVALID_DOHANDLEが返ります。
void nn::nex::DOCallContext::SetTargetStation ( DOHandle  hTargetStation)
inherited

呼び出し対象のステーションを設定します。

この関数が呼び出されたときに、CallOnTargetStationフラグが自動的に設定されます。 コンストラクタになにも引数を設定しなかった場合、対象のステーションはINVALID_DOHANDLEとなります。 「対象となるステーション」の意味は、オブジェクトの型(派生先のクラス)によって異なります。 たとえば、RMCContext では、対象のステーションとは、RMC(リモートメソッドコール)の呼び出し先となります。 FetchContext では、デュプリカを取ってくる対象のステーションになります。 MigrationContext では、オブジェクトの移転先のステーションとなります。

引数
[in]hTargetStation呼び出し対象となるステーションのハンドル。
参照
GetTargetStation, Flags
DOHandle nn::nex::DOCallContext::GetTargetStation ( )
inherited

呼び出し対象のステーションを取得します。

一般的には、この関数はSetTargetStation() にて設定されたステーションへの 複製オブジェクトハンドル(DOHandle)を返します。 しかし、OneWayCall(Flags を参照)が指定されていないRMC(リモートメソッドコール)については、 この関数はSetTargetStation() で指定したステーションか、CallOnMasterかCallOnLocalStationフラグが返ります。 OneWayCallフラグがセットされていたら、他のフラグによってセットされたほかの対象のステーションにかかわらず SetTargetStation() でセットされたステーションを返します。

戻り値
呼び出し対象のステーションが返ります。
参照
SetTargetStation
virtual qBool nn::nex::DOCallContext::FlagsAreValid ( ) const
virtualinherited

フラグ(Flags)の組み合わせが正しいかどうかを取得します。


戻り値一覧:

true フラグの組み合わせが正しいときに返ります。

false フラグの組み合わせが正しくないかエラーが発生したときに返ります。

nn::nex::CallContextを再実装しています。

void nn::nex::DOCallContext::ClearTargets ( )
inherited

このDOCallContextに前に設定されていた対象のステーション情報を消去します。

この関数は、このDOCallContextオブジェクトに設定されているすべての対象に関するフラグを降ろします。 その後、対象のステーションへの複製オブジェクトハンドルをINVALID_DOHANDLEに設定します(これがデフォルト状態)。 確実に正しい対象に対してこの呼び出しが実行されるために、対象のステーションを設定する前にこの関数を実行します。

qBool nn::nex::DOCallContext::Wait ( qUnsignedInt32  uiTimeout = WAIT_INFINITE_TIMEOUT)
inherited

非同期処理が完了するまたはタイムアウトを越えるまで、システムを待機させます。

DOCallContext::Flags の SynchronousCall が オフの時に呼び出すことができます。

qBool nn::nex::DOCallContext::Cancel ( State  eNewState = CallCancelled)
inherited

この呼び出しは、DOCallContextが削除された場合に自動的にキャンセルされます。

このDOCallContextが呼び出しに対してキャンセルを許可しない場合(マイグレーションの呼び出しの場合)、 呼び出しは終了するまでロックアップします。

qBool nn::nex::CallContext::Cancel ( )
inherited

この CallContext に関連付けられている非同期処理をキャンセルします。

CallContext に関連付けされた非同期処理のうち、まだ実行されていない処理を放棄します。 本関数から戻った後は非同期処理開始時にセットした out 引数を解放する事ができます。

すでに実行されている処理については取り消す事は出来ず、どこまで処理されたかを知る方法はありません。 例えば、サーバーに対して何らかのリクエストを行う処理をキャンセルした場合、サーバーへのリクエストを送信した後に キャンセルが行われてもそのリクエストはサーバーで処理されます。その結果を呼び出し側で受信してもそれを無視するという動作になります。

主に非同期処理の結果を無視して良い状況で非同期処理開始時にセットしたout引数を解放する目的で使用してください。

本関数で非同期処理がキャンセルされた場合、返値は true となり非同期処理の結果は QERROR(Core, Cancelled) になります。 ステートが CallInProgress 以外だった場合にキャンセルした場合は返値は false となり、キャンセル処理は行われません。


戻り値一覧:

true 非同期処理がキャンセルされた。(ステートが CallInProgress だった場合)

false 非同期処理が開始されていないものをキャンセルしようとした。(ステートが Available だった場合。) もしくはすでに非同期処理が完了していた。(ステートが CallSuccess もしくは CallFailure もしくは CallCancelled だった場合。)

参照
State , Reset
void nn::nex::DOCallContext::SetSubStreamID ( SubStreamID  subStreamID)
inherited

Reliable通信の場合に、送信時に使うSubStreamIDを指定します。

デフォルトは SubStreamIDDefine::SYSTEMで、システムと共用です。

引数
[in]subStreamID送信時に利用するSubStreamID
参照
SubStreamIDDefine, StreamSettings::SetMaxUserReliableSubStreams()
SubStreamID nn::nex::DOCallContext::GetSubStreamID ( ) const
inherited

Reliable通信の場合に、送信時に使うSubStreamIDを取得します。

デフォルトは SubStreamIDDefine::SYSTEMで、システムと共用です。

戻り値
送信時に利用するSubStreamID
参照
SubStreamIDDefine, StreamSettings::SetMaxUserReliableSubStreams()
DOCallContext::Outcome nn::nex::DOCallContext::GetOutcome ( ) const
inherited

非同期処理の結果を DOCallContext::Outcome として取得します。

特定の非同期処理に対する結果を取得します。 結果の内容については CallContext をパラメータとしてとる関数を参照してください。

戻り値
DOCallContext::Outcome としての非同期処理の結果。
static const qChar* nn::nex::DOCallContext::GetOutcomeString ( Outcome  uOutcome)
staticinherited

DOCallContext::Outcome の値を該当する名前へ変換します。

引数
[in]uOutcomeOutcomeの値
戻り値
uOutcomeに該当するOutcome名
template<typename TCallback >
void nn::nex::DOCallContext::RegisterCompletionCallbackGeneric ( const TCallback &  callback,
qBool  deleteCallbackAfterCall = false,
qBool  bAddToEnd = true 
)
inherited

この DOCallContext の完了時に実行するコールバックを設定します。

設定したコールバックはこの DOCallContext が完了状態に遷移したときに呼び出されます。 このコールバックを使用することで、 DOCallContext が完了したかどうかを確認するためにポーリングする手間を省くことができます。

callback には DOCallContext* を引数に取る関数ポインタ、関数オブジェクト、ラムダ式を指定できます。 AddCallContextArgumentAdapter() を併用すると引数を一つも取らない関数を渡すこともできます。

関数オブジェクトを渡す場合は値もしくは参照型で渡す方法とポインタ型で渡す方法の二種類があり、それぞれ挙動が異なります。 値もしくは参照型で渡した場合は内部で関数オブジェクトがコピーもしくはムーブされ、コールバックはそのコピーもしくはムーブされたオブジェクトに対して行われます。 そのため、本関数呼び出し後は指定したオブジェクトを即座に破棄する事ができます。 ポインタ型で渡した場合は、コールバックはそのポインタが指すオブジェクトに対して行われます。 そのため、コールバックが呼び出されるまでその関数オブジェクトを呼び出し側で保持しておく必要があります。

本関数を複数回呼び出すことで複数のコールバックを登録することが出来ます。 複数のコールバックを登録した場合はデフォルトでは登録順にコールバックの呼び出しが行われ、最初に登録されたコールバックは最初に呼び出されます。 この順序を変更したい場合は、コールバックを登録する際に bAddToEnd パラメータを設定する必要があります。

callback に関数オブジェクトをポインタで渡した場合は deleteCallbackAfterCall を true にする事で callback の呼び出し後に自動的に callback を delete することができます。 もし callback を delete するのではなくアプリケーション独自の解放処理を行いたい場合は、 再度本関数を呼び出しそのための関数オブジェクトを追加する事で実装が可能です。

コールバック関数内では NEX のブロック関数を呼び出さないようにしてください。

引数
[in]callbackコールバックする関数ポインタもしくは関数オブジェクトもしくはラムダ式。
[in]deleteCallbackAfterCallcallback の実行が完了した後自動的に callback を delete するかどうか。
[in]bAddToEndtrue(デフォルト)であれば、コールバックはリストの最後に追加されます。falseであればリストの先頭に追加されます。
void nn::nex::CallContext::SetTimeout ( TimeInterval  tiTimeout)
inherited

非同期処理のタイムアウトをセットします。

非同期処理の開始後 tiTimeout ミリ秒後に非同期処理が完了していない( CallInProgress )場合に、 自動的に状態が CallFailure に移行し、 GetOutcome() で取得できる qResult が QRESULT(Core, Timemout) になります。

引数
[in]tiTimeoutタイムアウト時間(ミリ秒)
State nn::nex::CallContext::GetState ( ) const
inherited

CallContext の現在の状態を返します。

NEX のスレッドモードがスレッドアンセーフモードであっても、本関数は Scheduler::Dispatch() を含む任意の他の関数と同時に呼び出すことができます。

戻り値
現在の State 。 Available 、 CallInProgress 、 CallSuccess 、 CallFailure または CallCancelled のいずれかを返します。
参照
State
void nn::nex::CallContext::SetUserContext ( size_t  iIndex,
const UserContext oUserContext 
)
inherited

この CallContext に関連付けられている UserContext を設定します。

引数
[in]iIndexこの CallContext に関連付けられている UserContext のユーザー定義インデックスです。
[in]oUserContextこの CallContext に関連付けされている UserContext へのポインタ。
参照
GetUserContext
const UserContext& nn::nex::CallContext::GetUserContext ( size_t  iIndex) const
inherited

この CallContext に関連付けられている UserContext を返します。

戻り値
この CallContext に関連付けされている UserContext へのポインタ。
引数
[in]iIndex返される UserContext のユーザー定義インデックスです。
参照
SetUserContext
void nn::nex::CallContext::SetFlag ( qUnsignedInt32  uiFlag)
inherited

非同期処理に使用するフラグを設定します。

引数
[in]uiFlagCallContext::Flags で定義されるフラグ。
参照
ClearFlag, FlagIsSet, Flags
void nn::nex::CallContext::ClearFlag ( qUnsignedInt32  uiFlag)
inherited

SetFlag を使用して設定されたフラグをクリアします。

引数
[in]uiFlagコールが呼び出されるフラグ。
参照
SetFlag, FlagIsSet, Flags
qBool nn::nex::CallContext::FlagIsSet ( qUnsignedInt32  uiFlag) const
inherited

特定のフラグが設定されているかどうかを返します。

戻り値
指定のフラグが設定されれば true 、そうでないかエラーが起きた場合は false 。
引数
[in]uiFlagコールが呼び出されるフラグ。
参照
SetFlag, ClearFlag, Flags
void nn::nex::CallContext::RegisterCompletionCallback ( CompletionCallback  pfCompletionCallback,
const UserContext oContext,
qBool  bAddToEnd = true 
)
inherited

この CallContext の完了時に実行するコールバック関数を設定します。

設定したコールバックはこの CallContext が完了状態に遷移したときに呼び出されます。 このコールバックを使用することで、 CallContext が完了したかどうかを確認するためにポーリングする手間を省くことができます。

本関数を複数回呼び出すことで複数のコールバックを登録することが出来ます。 複数のコールバックを登録した場合はデフォルトでは登録順にコールバックの呼び出しが行われ、最初に登録されたコールバックは最初に呼び出されます。 この順序を変更したい場合は、コールバックを登録する際に bAddToEnd パラメータを設定する必要があります。

コールバック関数内では NEX のブロック関数を呼び出さないようにしてください。

引数
[in]pfCompletionCallback完了時に呼び出されるコールバック関数へのポインタ。
[in]oContext呼び出されるコールバック関数へ渡される UserContext
[in]bAddToEndtrue(デフォルト)であれば、コールバックはリストの最後に追加されます。falseであればリストの先頭に追加されます。
void nn::nex::CallContext::RegisterCompletionCallback ( CallbackRoot pCallback,
qBool  bCallOnSuccess = true,
qBool  bAddToEnd = true 
)
inherited

この CallContext の完了時に実行するコールバックオブジェクトを設定します。

設定したコールバックはこの CallContext が完了状態に遷移したときに呼び出されます。 このコールバックを使用することで、 CallContext が完了したかどうかを確認するためにポーリングする手間を省くことができます。

本関数を複数回呼び出すことで複数のコールバックを登録することが出来ます。 複数のコールバックを登録した場合はデフォルトでは登録順にコールバックの呼び出しが行われ、最初に登録されたコールバックは最初に呼び出されます。 この順序を変更したい場合は、コールバックを登録する際に bAddToEnd パラメータを設定する必要があります。

コールバック関数内では NEX のブロック関数を呼び出さないようにしてください。

引数
[in]pCallback完了時に呼び出されるコールバックオブジェクトへのポインタ。
[in]bCallOnSuccess真(デフォルト)であれば、 コールバックは非同期処理の成功時にのみ呼び出されます。
[in]bAddToEndtrue(デフォルト)であれば、コールバックはリストの最後に追加されます。falseであればリストの先頭に追加されます。
qBool nn::nex::CallContext::Reset ( )
inherited

CallContext の状態を利用可能に再設定します。

このメソッドは、 State が Sucess 、 Failure または Cancelled のいずれかひとつである場合のみ、呼び出すことができます。

State が CallInProgress のときに本関数が呼び出されると、エラー SYSTEMERROR_GEN_INVALID_OPERATION になります。 State が Available の場合、本関数は true を返しますが、何も起こりません。

参照
State
qBool nn::nex::CallContext::WaitWithoutDispatch ( qUnsignedInt32  uiTimeout = WAIT_INFINITE_TIMEOUT)
inherited

非同期処理が完了する、またはタイムアウトを越えるまで待機します。

本関数は、 CallContextState が CallInProgress の場合に呼び出すことができます。 非同期処理が完了する、またはタイムアウトを越えるまで処理を戻しません。 CallContext::Wait() とは異なり、本関数内部で Scheduler::Dispatch() は呼び出されません。 内部処理を進めるには他のスレッドで Scheduler::Dispatch() などを呼び出す必要があります。 NEX のスレッドモードがスレッドアンセーフモードであっても、 本関数は Scheduler::Dispatch() を含む任意の他の関数と同時に呼び出すことができます。

タイムアウトを越えた場合でも非同期処理が継続するため、非同期処理のout引数は解放できません。 out引数を解放したい場合は明示的に CallContext::Cancel() を呼び出してください。

引数
[in]uiTimeout待機する最大の時間(ミリ秒)。デフォルトのuiTimeoutは無限大です。
戻り値
非同期処理が完了した場合は true を、タイムアウトを越えた場合は false を返します。 false を返した場合の CallContext::GetOutcome() の値は不定です。
参照
State, CallContext::GetOutcome