BNetBuffer
継承: BArchivable
宣言: be/net/NutBuffer.h
ライブラリ: libnetapi.so
アロケーション: Constructor only
BNetBufferクラスはさまざまな種類のデータが含まれるネットワークバッファを作成する簡単な方法を提供する。 BNetEndpointクラスとともに使用する。
いったん
BNetBufferを作成したら、さまざまなデータ型に対して設計された関数のシリーズを使うことによって、データを追加できる。例えば、バッファを作成して、long型の整数2と文字列、"This is a test."を格納するためにはこのようにすればよい。
BNetBuffer buffer(512);
buffer.AppendInt32(2);
buffer.AppendString("This is a test.");
AppendInt32()関数は自動的に値をネットワークバイトオーダーにする。ほかのAppendXXX()関数も同様である(16-ビット 32-ビット 64-ビット signed または unsignedの整数)。同様にRemoveXXX()関数もデータを削除し、エンディアンを考慮する。
コンストラクタとデストラクタ
BNetBuffer()
|
|
|
|
|
|
BNetBuffer(size_t size = 0)
| |
BNetBuffer(const BNetBuffer &from)
| |
BNetBuffer(BMessage *archive)
| |
BNetBufferを作成する。最初の書式は、sizeバイトだけデータが入るバッファを作成する。この場合、バッファは最初、からっぽである。
2番目の書式は、すでにデータを含んでいるかもしれないfrom引数によって示されたBNetBufferと正確に同一なBNetBufferを作成する。
~BNetBuffer
典型的なデストラクタ
メンバ関数
AppendInt8()
,
AppendUint8()
,
AppendInt16()
,
AppendUint16()
,
AppendInt32()
,
AppendUint32()
,
AppendInt64()
,
AppendUint64()
,
AppendFloat()
,
AppendDouble()
,
AppendString()
,
AppendData()
,
AppendMessage()
|
|
|
|
|
|
status_t AppendInt8(int8 value)
| |
status_t AppendUint8(uint8 value)
| |
status_t AppendInt16(int16 value)
| |
status_t AppendUint16(uint16 value)
| |
status_t AppendInt32(int32 value)
| |
status_t AppendUint32(uint32 value)
| |
status_t AppendInt64(int64 value)
| |
status_t AppendUint64(uint64 value)
| |
status_t AppendFloat(float value)
| |
status_t AppendDouble(double value)
| |
status_t AppendString(const char *string)
| |
status_t AppendData(const void *data, size_t size)
| |
status_t AppendMessage(BMessage &message)
| |
バッファの最後にデータを追加する。整数の値は自動的にネットワークバイトオーダーに変換される(しかし、浮動小数点とAppendData()によって追加される構造体は違う)
文字列はnullで終わる文字列として追加される。
AppendData()関数はdataからsizeバイトコピーする。
返値
B_OK.データはエラーなしに追加された。
B_ERROR.データは追加できなかった。
Data()
,
Size()
,
BytesRemaining()
|
|
|
|
|
|
unsigned char *Data(void) const
| |
size_t Size(void) const
| |
size_t BytesRemaining(void) const
| |
Data() はBNetBufferの内部のデータバッファへのポインタを返す。
Size() はバッファが現在使っているバイト数を返す。
BytesRemaining() はバッファ内の使用されてないバイト数を返す。
RemoveInt8()
,
RemoveUint8()
,
RemoveInt16()
,
RemoveUint16()
,
RemoveInt32()
,
RemoveUint32()
,
RemoveInt64()
,
RemoveUint64()
,
RemoveFloat()
,
RemoveDouble()
,
RemoveString()
,
RemoveData()
,
RemoveMessage()
|
|
|
|
|
|
status_t RemoveInt8(int8 &value)
| |
status_t RemoveUint8(uint8 &value)
| |
status_t RemoveInt16(int16 &value)
| |
status_t RemoveUint16(uint16 &value)
| |
status_t RemoveInt32(int32 &value)
| |
status_t RemoveUint32(uint32 &value)
| |
status_t RemoveInt64(int64 &value)
| |
status_t RemoveUint64(uint64 &value)
| |
status_t RemoveFloat(float &value)
| |
status_t RemoveDouble(double &value)
| |
status_t RemoveString(char *string, size_t size)
| |
status_t RemoveData(void *data, size_t size)
| |
status_t RemoveMessage(BMessage &message)
| |
バッファからデータを取り除く。整数の値は、自動的にネットワークバイトオーダーから変換される(しかし浮動小数点と、RemoveData()関数によって取り除かれる構造体は違う)
文字列はsizeバイトまで、NULLで終わる文字列として取り除かれる。stringのバッファが少なくともsizeバイトあるか確認してください。(訳注:これはRemoveString()の第一引数がsizeバイト以下だとエラーの原因になるということです)
RemoveData()はsizeバイト取り除いて、dataで示されるバッファにコピーする。data バッファが少なくともsizeバイトあることを確認してください。
これらの関数はバッファの最初から始まります。アイテムが取り除かれたら、次のRemove...()関数の呼び出しはバッファの次のバイトから始まります。
RETURN CODES
B_OK. はきちんと取り除かれた。
を参照してください。
演算子
=
(assignment)
|
|
|
|
|
|
BNetBuffer &operator =(const BNetBuffer &from)
| |
BNetBufferを
fromで示されたところから左辺値にコピーする。それによってオブジェクトをコピーする。もしfromが接続されていたら、左辺値も同じように接続される。またなにがあろうとバッファ内のデータもコピーされる。
訳者 big56