メッセージキューイングアクセス機能 TP1/Message Queue - Access 使用の手引

[目次][用語][索引][前へ][次へ]

ImqCacheクラス(C++)

このクラスは,データをメモリに保持したり,整理したりするのに使用します。ユーザが固定サイズのメモリのバッファを指定したり,システムによる自動的で柔軟なメモリ設定に任せたりもできます。

インクルードファイル

このクラスを使用するときは,imqcac.hppファイルをインクルードしてください。

オブジェクト属性

● automatic buffer

バッファメモリがシステムによって自動的に管理されるときはTRUE,ユーザによって提供されるときはFALSEを示します。初期値はTRUEです。

● buffer length

バッファ内のメモリのバイト数です。初期値は0です。

● buffer pointer

バッファメモリのアドレスです。初期値はヌルです。

● data length

data pointerよりあとのバイト数です。message lengthに等しいか,それより小さい数値です。初期値は0です。

● data offset

data pointerより前のバイト数です。message lengthに等しいか,それより小さい数値です。初期値は0です。

● data pointer

読み取りまたは書き込みが実行されるバッファのアドレスです。初期値はヌルです。

● message length

バッファ内の有効なデータのバイト数です。初期値は0です。

コンストラクタ

● ImqCache( );

デフォルトのコンストラクタです。

● ImqCache( const ImqCache & cache );

コピーコンストラクタです。

メソッド

● void operator = ( const ImqCache & cache );

message length分のバイトのデータをcacheオブジェクトから該当するオブジェクトへコピーします。automatic bufferがFALSEである場合は,buffer lengthが,コピーされたデータを収容できるだけの大きさでなければなりません。

● ImqBoolean automaticBuffer( ) const ;

automatic bufferの値を返します。

● size_t bufferLength( ) const ;

buffer lengthを返します。

● char * bufferPointer( ) const ;

buffer pointerを返します。

● void clearMessage( );

message lengthとdata offsetを両方とも0に設定します。

● size_t dataLength( ) const ;

data lengthを返します。

● size_t dataOffset( ) const ;

data offsetを返します。

● ImqBoolean setDataOffset( const size_t offset );

data offsetを設定します。message lengthがdata offset以上であることが必要なときは,message lengthを増やします。正常に実行された場合はTRUEを返します。

● char * dataPointer( ) const ;

data pointerのコピーを返します。

● size_t messageLength( ) const ;

message lengthを返します。

● ImqBoolean setMessageLength( const size_t length );

message lengthを設定します。

message lengthがbuffer length以下であることが必要なときは,buffer lengthを増やします。data offsetがmessage length以下であることが必要なときは,data offsetを減らします。正常に実行された場合はTRUEを返します。

● ImqBoolean moreBytes( const size_t bytes-required );

data pointerからバッファの終わりまでの間で,さらにbytes-required分のバイトを書き込みに使用できるようにします。正常に実行された場合はTRUEを返します。

automatic bufferがTRUEである場合は,必要に応じて,さらに多くのメモリが取得されます。それ以外の場合は,buffer lengthが十分な大きさでなければなりません。

● ImqBoolean read( const size_t length, char * & external-buffer );

length分のバイトを,data pointer位置で始まるバッファからexternal-bufferへコピーします。データがコピーされたあとで,data offsetはlengthだけ増やされます。正常に実行された場合はTRUEを返します。

● ImqBoolean resizeBuffer( const size_t length );

automatic bufferがTRUEである場合は,バッファメモリを再度割り振ることによって,buffer lengthを変更します。

既存のバッファから最大message length分のバイトのデータが新しいバッファにコピーされます。コピーされる最大数はlengthバイトです。buffer pointerは変更されます。message lengthとdata offsetは,新しいバッファの範囲内で可能な限り接近して予約されます。正常に実行された場合はTRUEを返します。automatic bufferがFALSEである場合はFALSEを返します。

注意
システム資源に問題があると,このメソッドは失敗し,理由コードMQRC_STORAGE_NOT_AVAILABLEが返されます。

● ImqBoolean useEmptyBuffer( const char * external-buffer, const size_t length );

空のユーザバッファを識別し,buffer pointerがexternal-bufferを示すように設定し,buffer lengthをlengthに,また,message lengthを0にそれぞれ設定します。clearMessageを実行します。バッファがデータで完全に満たされている場合は,代わりにuseFullBufferメソッドを使用してください。バッファの一部にデータが入っている場合は,setMessageLengthメソッドを使用して,正しい量を示してください。正常に実行された場合はTRUEを返します。

このように,このメソッドを使用して,固定量のメモリ(external-bufferがヌル文字でなく,lengthが0でない)を識別できます。この場合,automatic bufferはFALSEに設定されます。また,システムによる柔軟なメモリ管理(external-bufferがヌル文字で,かつlengthが0である)に戻すこともできます。この場合,automatic bufferはTRUEに設定されます。

● ImqBoolean useFullBuffer( const char * externalBuffer, const size_t length );

このメソッドとImqBoolean useEmptyBufferメソッドの違いは,message lengthがlengthに設定されていることだけです。正常に実行された場合はTRUEを返します。

● ImqBoolean write( const size_t length, const char * external-buffer );

length分のバイトを,external-bufferから,data1 pointer位置で始まるバッファへコピーします。データがコピーされたあとで,data offsetはlengthだけ増やされます。また,message lengthが新しいdata offset値以上になるようにする必要がある場合はmessage lengthが増やされます。正常に実行された場合はTRUEを返します。

automatic bufferがTRUEである場合は,十分な量のメモリが保証されます。それ以外の場合は,最終的なdata offsetがbuffer lengthを超えてはいけません。

その他の関連クラス

ImqError

理由コード

理由コードの詳細については,「付録A 理由コード」,またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。