メッセージキューイングアクセス機能 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を返します。
● 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を超えてはいけません。
その他の関連クラス
理由コード
理由コードの詳細については,「付録A 理由コード」,またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1994, 1999. All rights reserved.