Yate: MimeBody Class Reference

Yate

Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
MimeBody Class Referenceabstract

Abstract MIME data holder. More...

`#include <yatemime.h>`

Inheritance diagram for MimeBody:

## Public Member Functions
virtual | ~MimeBody ()
virtual void * | getObject (const String &name) const
const MimeHeaderLine & | getType () const
MimeBody * | getFirst (const String &type) const
const ObjList & | headers () const
void | appendHdr (MimeHeaderLine *hdr)
void | removeHdr (MimeHeaderLine *hdr, bool delobj=true)
MimeHeaderLine * | findHdr (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 NamedString * | getParam (const char *name, const char *header=0) const
const DataBlock & | getBody () const
const DataBlock & | body () const
virtual bool | isSDP () const
virtual bool | isMultipart () const
virtual MimeBody * | clone () const =0
Public Member Functions inherited from GenObject
| GenObject ()
virtual | ~GenObject ()
virtual bool | alive () const
virtual void | destruct ()
virtual const String & | toString () const
virtual const String & | traceId () const
NamedCounter * | getObjCounter () const
NamedCounter * | setObjCounter (NamedCounter *counter)

## Static Public Member Functions
static MimeBody * | build (const char *buf, int len, const MimeHeaderLine &type)
static String * | getUnfoldedLine (const char *&buf, int &len)
Static Public Member Functions inherited from GenObject
static void * | getObject (const String &name, const GenObject *obj)
static bool | getObjCounting ()
static void | setObjCounting (bool enable)
static NamedCounter * | getObjCounter (const String &name, bool create=true)
static ObjList & | getObjCounters ()

## 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

## ◆ ~MimeBody()

virtual ~MimeBody | ( |  | ) |
| virtual

Destructor

## ◆ MimeBody() [1/2]

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() [2/2]

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

## ◆ appendHdr()

void appendHdr | ( | MimeHeaderLine * | hdr | ) |
| inline

Append an additional header line to this body

Parameters

  hdr | The header line to append

References ObjList::append(), and MimeBody::m_headers.

## ◆ body()

const DataBlock & body | ( |  | ) | const
| inline

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

Returns
  Block of binary data

References MimeBody::m_body.

Referenced by MimeMultipartBody::appendBody(), and MimeMultipartBody::removeBody().

## ◆ build()

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

## ◆ buildBody()

virtual void buildBody | ( |  | ) | const
| protectedpure virtual

Method that is called internally to build the binary encoded body

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

## ◆ buildHeaders()

void buildHeaders | ( | String & | buf | ) |
| inline

Build a string with this body's header lines

Parameters

  buf | Destination string

References MimeHeaderLine::buildHeaders(), MimeHeaderLine::buildLine(), and MimeBody::m_headers.

## ◆ clone()

virtual MimeBody * clone | ( |  | ) | const
| pure virtual

Duplicate this MIME body

Returns
  Copy of this MIME body

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

## ◆ delParam()

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

## ◆ findHdr()

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

## ◆ getBody()

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

## ◆ getFirst()

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

## ◆ getObject()

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 MimeBinaryBody, MimeLinesBody, MimeMultipartBody, MimeSdpBody, and MimeStringBody.

## ◆ getParam()

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

## ◆ getType()

const MimeHeaderLine & getType | ( |  | ) | const
| inline

Retrieve the MIME type of this body

Returns
  Name of the MIME type/subtype

## ◆ getUnfoldedLine()

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

## ◆ headers()

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

References MimeBody::m_headers.

## ◆ isMultipart()

virtual bool isMultipart | ( |  | ) | const
| inlinevirtual

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

Returns
  True if this body is multipart

Reimplemented in MimeMultipartBody.

## ◆ isSDP()

virtual bool isSDP | ( |  | ) | const
| inlinevirtual

Check if this body is a Session Description Protocol

Returns
  True if this body holds a SDP

Reimplemented in MimeSdpBody.

## ◆ removeHdr()

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

References MimeBody::m_headers, and ObjList::remove().

## ◆ setParam()

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

## Member Data Documentation

## ◆ m_body

DataBlock m_body
| mutableprotected

Block of binary data that buildBody() must fill

Referenced by MimeBody::body().

## ◆ m_headers

ObjList m_headers
| protected

Additional body headers (other then Content-Type)

Referenced by MimeBody::appendHdr(), MimeBody::buildHeaders(), MimeBody::headers(), and MimeBody::removeHdr().

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

- yatemime.h