Back to the WFC main page

CDataChunk

$Revision: 9 $

Description

This class allows you to handle unknown data in an orderly way. It is patterned after the RIFF idea. RIFF is used in WAV files and AVI files. It is a very simple way of handling data. You have a four byte identifier followed by a four byte length followed by the length number of bytes. Very simple. Very effective.

Data Members

DWORD Identifier
This contains the four byte identifier.
CByteArray Data
This contains the payload.

Construction

CDataChunk()
CDataChunk( const CDataChunk& source )
Constructs the object.

Methods

inline void Copy( const CDataChunk& source )
Copies the contents of another CDataChunk into this one.
inline void Copy( DWORD identifier, const CByteArray& payload )
Sets the Identifier to identifier and copies the payload into Payload.
static void GetIdentifier( DWORD identifier, CString& string )
Translates the four byte identifier into a string. This makes it easier for humans to decipher the identifier.

Operators

inline CDataChunk& operator = ( const CDataChunk& source )
Calls Copy().

Notes

This class breaks all of the object oriented rules. No members are virtual therefore they are useless when it comes to reuse. The reason I did this was speed. If you're passing data in an orderly way, I assume you need to do it quickly (at least at this level of your design).

Example

void send_SLVL_chunk( const CByteArray& data, CDataSocket& socket )
{
   CDataChunk data_chunk;

   data_chunk.Identifier = MAKE_DATA_CHUNK_ID( 'S', 'L', 'V', 'L' );
   data_chunk.Copy( data );

   // Transmit the chunk out of the socket

   socket.AddData( data_chunk );
}
Copyright, 2000, Samuel R. Blackburn
$Workfile: CDataChunk.cpp $
$Modtime: 1/04/00 5:11a $