ImqObjectクラス(C++)
このクラスは,キューマネジャおよびキューの属性をカプセル化します。
このクラスは抽象クラスです。このクラスのオブジェクトが破棄されると,このクラスは自動的にクローズされ,そのImqQueueManager接続は切断されます。
インクルードファイル
このクラスを使用するときは,imqobj.hppファイルをインクルードしてください。
オブジェクト属性
● alternate user id
最大MQ_USER_ID_LENGTH文字です。初期値はヌル文字です。
MQOD構造体の,AlternateUserIdフィールドに相当します。
● close options
初期値はMQCO_NONEです。この属性は,暗黙の再オープン操作時には無視されます。この操作では,必ず値MQCO_NONEが使用されるためです。
● connection reference
ローカルのキューマネジャへの必要な接続を提供するImqQueueManagerオブジェクトへの参照です。ImqQueueManagerオブジェクトの場合,参照はオブジェクト自身です。初期値はヌル文字です。
- 注意
-
connection referenceと,名前を指定されたキューのキューマネジャを識別するImqQueue queue manager nameとを混同しないようにしてください。
● description
キューマネジャ,キュー,またはプロセスの記述名(最大64文字)です。属性は読み取り専用です。
● name
キューマネジャ,キュー,または該当するプロセスの名前(最大48文字)です。初期値はヌル文字です。これは,結果として生じた動的キューの名前に対するopenのあとのモデルキュー変更の名前です。空のキューマネジャ名の代わりに,必ず実際のキューマネジャ名が返されます。
MQOD構造体,MQOR構造体の,ObjectNameフィールド,またはObjectQMgrNameフィールドに相当します。
● next managed object
特定の順序でなく,このクラスの次のオブジェクトで,このオブジェクトと同じconnection referenceを持つものです。初期値は0です。
● open options
初期値はMQOO_INQUIREです。適切な値を設定する方法には,次の2通りがあります。
-
open optionsを設定しないで,openメソッドも使用しないでください。
TP1/Message Queue Accessは,open optionsを自動的に調整し,必要に応じてオブジェクトの自動的なオープン,再オープン,およびクローズを実行します。この結果,不要な再オープン操作が実行される場合があります。これは,TP1/Message Queue AccessがopenForメソッドを使用するため,open optionsが次々に追加されるためです。
-
結果的にMQI命令が発生する任意のメソッドを使用する前に,open optionsを適切に設定してください。
これによって,不要な再オープン操作が実行されなくなります。潜在的な再オープン問題が発生しやすい場合は,必ず,open optionsを明示的に設定してください。
openメソッドを使用する場合は,最初にopen optionsが適切かどうか確認する必要があります。ただし,必ずしもopenメソッドを使用する必要はありません。TP1/Message Queue Accessは,引き続き1の場合と同じ動作を示しますが,2の状況では効率の低下にはなりません。
0は有効な値ではないため,オブジェクトをオープンしてみる前に,適切な値を設定する必要があります。setOpenOptions(open options)のあとにopen( )を使用するか,openFor(open options)を使用して実行します。
● open status
オブジェクトがオープンである(TRUE)か,クローズされている(FALSE)かを示します。属性は読み取り専用です。初期値はFALSEです。
● previous managed object
特定の順序ではなく,このクラスの直前のオブジェクトで,このオブジェクトと同じconnection referenceを持つものです。初期値は0です。
コンストラクタ
● ImqObject( );
デフォルトのコンストラクタです。
● ImqObject( const ImqObject & object );
コピーコンストラクタです。open statusはFALSEとなります。
メソッド
● void operator = ( const ImqObject & object );
必要に応じてクローズを実行し,objectからインスタンスデータをコピーします。open statusはFALSEとなります。
● ImqString alternateUserId( ) const ;
alternate user idのコピーを返します。
● ImqBoolean setAlternateUserId( const char * id );
alternate user idを設定します。alternate user idを設定できるのは,open statusがFALSEである場合だけです。正常に実行された場合はTRUEを返します。
● ImqBoolean close( );
open statusをFALSEに設定します。正常に実行された場合はTRUEを返します。
MQCLOSE命令に相当します。
● MQLONG closeOptions( ) const ;
close optionsを返します。
● void setCloseOptions( const MQLONG options );
close optionsを設定します。
● ImqQueueManager * connectionReference( ) const ;
connection referenceを返します。
● void setConnectionReference( ImqQueueManager & manager );
connection referenceを設定します。
● void setConnectionReference( ImqQueueManager * manager = 0 );
connection referenceを設定します。
● virtual ImqBoolean description( ImqString & description ) = 0 ;
descriptionのコピーを提供します。正常に実行された場合はTRUEを返します。
MQINQ命令の,MQCA_Q_MGR_DESCセレクタ,MQCA_Q_DESCセレクタ,およびMQCA_PROCESS_DESCセレクタに相当します。
● ImqString description( );
考えられるエラーを指示しないで,descriptionのコピーを返します。
MQINQ命令の,MQCA_Q_MGR_DESCセレクタ,MQCA_Q_DESCセレクタ,およびMQCA_PROCESS_DESCセレクタに相当します。
● ImqObject * nextManagedObject( ) const ;
next managed object を返します。
● virtual ImqBoolean name( ImqString & name );
nameのコピーを提供します。正常に実行された場合はTRUEを返します。
MQINQ命令の,MQCA_Q_MGR_NAMEセレクタ,MQCA_Q_NAMEセレクタ,およびMQCA_PROCESS_NAMEセレクタに相当します。
● ImqString name( );
考えられるエラーを指示しないで,nameのコピーを返します。
MQINQ命令の,MQCA_Q_MGR_NAMEセレクタ,MQCA_Q_NAMEセレクタ,およびMQCA_PROCESS_NAMEセレクタに相当します。
● ImqBoolean setName( const char * name = 0 );
nameを設定します。nameを設定できるのは,open statusがFALSEである場合だけです。また,ImqQueueManagerの場合は,connection statusがFALSEである場合です。正常に実行された場合はTRUEを返します。
● ImqBoolean open( );
open optionsとnameを使用して必要に応じてオブジェクトをオープンすることによって,open statusをTRUEに変更します。ImqQueueManager connection statusを必ずTRUEにする必要がある場合には,connection reference情報とImqQueueManager connectメソッドを使用します。open statusを返します。
MQOPEN命令に相当します。
● ImqBoolean openFor( const MQLONG required-options = 0 );
required-optionsが組み込まれたopen optionsを指定した状態で,オブジェクトがオープンされるようにします。
-
required-optionsが0である場合
入力は必須であり,どの入力オプションでも有効です。
-
open optionsにMQOO_INPUT_AS_Q_DEF,MQOO_INPUT_SHARED,およびMQOO_INPUT_EXCLUSIVEが含まれているときは,open optionsはすでに有効であり,変更されません。
-
open optionsにMQOO_INPUT_AS_Q_DEF,MQOO_INPUT_SHARED,およびMQOO_INPUT_EXCLUSIVEのどれも含まれていないときは,open optionsにMQOO_INPUT_AS_Q_DEFが設定されます。
-
-
required-optionsが0でない場合
必要なオプションがopen optionsに追加されます。
-
open optionsがMQOO_INPUT_AS_Q_DEF,MQOO_INPUT_SHARED,およびMQOO_INPUT_EXCLUSIVEのどれかであるとき,それ以外の値はリセットされます。
-
open optionsのどれかが変更され,オブジェクトがすでにオープンになっている場合は,open optionsを調整するためにオブジェクトは一時的にクローズされ,再オープンされます。
正常に実行された場合はTRUEを返します。正常に実行されたということは,オブジェクトが適切なオプションでオープンになっていることを示します。
MQOPEN命令に相当します。
● MQLONG openOptions( ) const ;
open optionsを返します。
● ImqBoolean setOpenOptions( const MQLONG options );
open optionsを設定します。open optionsを設定できるのは,open statusがFALSEである場合だけです。正常に実行された場合はTRUEを返します。
● ImqBoolean openStatus( ) const ;
open statusを返します。
● ImqObject * previousManagedObject( ) const ;
previous managed objectを返します。
メソッド(protected)
● MQHCONN connectionHandle( ) const ;
connection referenceと関連づけられたMQHCONNを返します。この値は,connection referenceがない場合,またはImqQueueManagerが接続されていない場合は0です。
● ImqBoolean inquire( const MQLONG int-attr, MQLONG & value );
整数値を返します。この索引はMQIA_*値です。エラーがあった場合,値はMQIAV_UNDEFINEDに設定されます。
● ImqBoolean inquire( const MQLONG char-attr, char * & buffer, const size_t length );
文字ストリングを返します。この索引はMQCA_*値です。
- 注意
-
上記のメソッドは,どれも単一の属性値しか返しません。複数の値についてスナップショットが必要な場合,値は一つのインスタンスについて互いに一貫していますが,MQCクライアント機能が提供するC++インタフェースではこの機能が用意されていないため,適切なパラメタを使ってMQINQ命令を使用する必要があります。
● virtual void openInformationDisperse( );
MQOPEN命令の直後にMQOD構造体の可変部分から情報を分散させます。
● virtual ImqBoolean openInformationPrepare( );
MQOPEN命令の直前にMQOD構造体の可変部分の情報を準備します。正常に実行された場合はTRUEを返します。
● ImqBoolean set( const MQLONG int-attr, const MQLONG value );
TP1/Message Queue Access整数属性を設定します。
● ImqBoolean set( const MQLONG char-attr, const char * buffer, const size_t required-length );
TP1/Message Queue Access文字属性を設定します。
● void setNextManagedObject( const ImqObject * object = 0 );
next managed objectを設定します。
● void setPreviousManagedObject( const ImqObject * object = 0 );
previous managed objectを設定します。
オブジェクト属性(protected)
● MQHOBJ ohobj
TP1/Message Queue Accessオブジェクトハンドルです。open statusがTRUEである場合にだけ有効です。
● MQOD omqod
組み込みMQOD構造体です。
理由コード
-
MQRC_ATTRIBUTE_LOCKED
-
MQRC_INCONSISTENT_OBJECT_STATE
-
MQRC_NO_CONNECTION_REFERENCE
-
MQRC_STORAGE_NOT_AVAILABLE
-
(MQCLOSEからの理由コード)
-
(MQCONNからの理由コード)
-
(MQINQからの理由コード)
-
(MQOPENからの理由コード)
理由コードの詳細については,「付録A 理由コード」,またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。