MimeBody Class Reference

Abstract MIME data holder. More...

#include <yatemime.h>

Inheritance diagram for MimeBody:

GenObject MimeBinaryBody MimeLinesBody MimeMultipartBody MimeSdpBody MimeStringBody

List of all members.

Public Member Functions

virtual ~MimeBody ()
virtual void * getObject (const String &name) const
const MimeHeaderLinegetType () const
MimeBodygetFirst (const String &type) const
const ObjListheaders () const
void appendHdr (MimeHeaderLine *hdr)
void removeHdr (MimeHeaderLine *hdr, bool delobj=true)
MimeHeaderLinefindHdr (const String &name, const MimeHeaderLine *start=0) const
void buildHeaders (String &buf)
bool setParam (const char *name, const char *value=0, const char *header=0)
bool delParam (const char *name, const char *header=0)
const NamedStringgetParam (const char *name, const char *header=0) const
const DataBlockgetBody () const
const DataBlockbody () const
virtual bool isSDP () const
virtual bool isMultipart () const
virtual MimeBodyclone () const =0

Static Public Member Functions

static MimeBodybuild (const char *buf, int len, const MimeHeaderLine &type)
static StringgetUnfoldedLine (const char *&buf, int &len)

Protected Member Functions

 MimeBody (const String &type)
 MimeBody (const MimeHeaderLine &type)
virtual void buildBody () const =0

Protected Attributes

DataBlock m_body
ObjList m_headers


Detailed Description

Abstract MIME data holder.

Abstract base class for holding Multipurpose Internet Mail Extensions data. Keeps a Content-Type header line with body type and parameters and any additional header lines the body may have. The body type contains lower case characters.


Constructor & Destructor Documentation

virtual ~MimeBody (  )  [virtual]

Destructor

MimeBody ( const String type  )  [protected]

Constructor to be used only by derived classes. Converts the MIME type string to lower case

Parameters:
type The value of the Content-Type header line

MimeBody ( const MimeHeaderLine type  )  [protected]

Constructor to be used only by derived classes. Builds this body from a header line. Converts the MIME type string to lower case

Parameters:
type The content type header line


Member Function Documentation

virtual void* getObject ( const String name  )  const [virtual]

RTTI method, get a pointer to a derived class given the class name

Parameters:
name Name of the class we are asking for
Returns:
Pointer to the requested class or NULL if this object doesn't implement it

Reimplemented from GenObject.

Reimplemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.

const MimeHeaderLine& getType (  )  const [inline]

Retrieve the MIME type of this body

Returns:
Name of the MIME type/subtype

MimeBody* getFirst ( const String type  )  const

Get the first body that matches a requested type, descends into multiparts

Parameters:
type Name of the MIME type to search for
Returns:
Pointer to requested body or NULL if not found

const ObjList& headers (  )  const [inline]

Retrieve the additional headers of this MIME body (other then Content-Type)

Returns:
The list of header lines of this MIME body

void appendHdr ( MimeHeaderLine hdr  )  [inline]

Append an additional header line to this body

Parameters:
hdr The header line to append

void removeHdr ( MimeHeaderLine hdr,
bool  delobj = true 
) [inline]

Remove an additional header line from this body

Parameters:
hdr The header line to remove
delobj True to delete the header, false to remove from list without deleting it

MimeHeaderLine* findHdr ( const String name,
const MimeHeaderLine start = 0 
) const

Find an additional header line by its name. The names are compared case insensitive

Parameters:
name The name of the header to find
start The starting point in the list. 0 to start from the beginning
Returns:
Pointer to MimeHeaderLine or 0 if not found

void buildHeaders ( String buf  )  [inline]

Build a string with this body's header lines

Parameters:
buf Destination string

References MimeHeaderLine::buildHeaders().

bool setParam ( const char *  name,
const char *  value = 0,
const char *  header = 0 
)

Replace the value of an existing parameter or add a new one

Parameters:
name Parameter's name
value Parameter's value
header Header whose parameter will be changed. Set to 0 to use the body's content type header
Returns:
False if the header doesn't exist

bool delParam ( const char *  name,
const char *  header = 0 
)

Remove a header parameter

Parameters:
name Parameter's name
header Header whose parameter will be removed. Set to 0 to use the body's content type header
Returns:
False if the header doesn't exist

const NamedString* getParam ( const char *  name,
const char *  header = 0 
) const

Get a header parameter

Parameters:
name Parameter's name
header Header whose parameter will be retrieved. Set to 0 to use the body's content type header
Returns:
Pointer to the desired parameter or 0 if not found

const DataBlock& getBody (  )  const

Retrieve the binary encoding of this MIME body. Build the body if empty. The body doesn't contain the Content-Type header or the additional headers

Returns:
Block of binary data

const DataBlock& body (  )  const [inline]

Get the binary data of this MIME body without building it.

Returns:
Block of binary data

virtual bool isSDP (  )  const [inline, virtual]

Check if this body is a Session Description Protocol

Returns:
True if this body holds a SDP

Reimplemented in MimeSdpBody.

virtual bool isMultipart (  )  const [inline, virtual]

Check if this body is multipart (can hold other MIME bodies)

Returns:
True if this body is multipart

Reimplemented in MimeMultipartBody.

virtual MimeBody* clone (  )  const [pure virtual]

Duplicate this MIME body

Returns:
Copy of this MIME body

Implemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.

static MimeBody* build ( const char *  buf,
int  len,
const MimeHeaderLine type 
) [static]

Method to build a MIME body from a type and data buffer. Unknown body types are built into a binary body. Exactly 1 leading CRLF is removed from the beginning of the buffer if found before building it

Parameters:
buf Pointer to buffer of data just after the body headers
len Length of data in buffer
type The header line declaring the body's content. Usually this is a Content-Type header line
Returns:
Newly allocated MIME body or NULL if the buffer is empty

static String* getUnfoldedLine ( const char *&  buf,
int &  len 
) [static]

Utility method, returns an unfolded line and advances the pointer

Parameters:
buf Reference to pointer to start of buffer data
len Reference to variable holding buffer length
Returns:
Newly allocated String holding the line of text

virtual void buildBody (  )  const [protected, pure virtual]

Method that is called internally to build the binary encoded body

Implemented in MimeMultipartBody, MimeSdpBody, MimeBinaryBody, MimeStringBody, and MimeLinesBody.


Member Data Documentation

DataBlock m_body [mutable, protected]

Block of binary data that buildBody() must fill

ObjList m_headers [protected]

Additional body headers (other then Content-Type)


The documentation for this class was generated from the following file:

Generated on Sat May 28 18:28:23 2011 for Yate by  doxygen 1.5.6