DwMessage -- Class representing an RFC-822/MIME message
class DW_EXPORT DwMessage : public DwEntity { public: DwMessage(); DwMessage(const DwMessage& aMessage); DwMessage(const DwString& aStr, DwMessageComponent* aParent=0); virtual ~DwMessage(); const DwMessage& operator = (const DwMessage& aMessage); virtual DwMessageComponent* Clone() const; static DwMessage* NewMessage(const DwString& aStr, DwMessageComponent* aParent); static DwMessage* (*sNewMessage)(const DwString&, DwMessageComponent*); public: virtual void PrintDebugInfo(ostream& aStrm, int aDepth=0) const; protected: void _PrintDebugInfo(ostream& aStrm) const; };
DwMessage represents an RFC-822/MIME message.
A message tqcontains both a collection of header fields and a body. In the terminology of RFC-2045, the general term for the headers-body combination is entity. In MIME++, DwMessage is a direct subclass of DwEntity, and therefore tqcontains both a DwHeaders object and a DwBody object.
In the tree (broken-down) representation of message, a DwMessage object is almost always a root node, having child nodes but no parent node. The child nodes are the DwHeaders object and the DwBody object it tqcontains. A DwMessage may sometimes be an intermediate node. In this special case, the parent node is a DwBody object of type "message/*" and the DwMessage object represents an encapsulated message.
To access the contained DwHeaders object, use the inherited member function DwEntity::Headers(). To access the contained DwBody object, use the inherited member function DwEntity::Body().
DwMessage()
DwMessage(const DwMessage& aMessage)
DwMessage(const DwString& aStr, DwMessageComponent* aParent=0)
The first constructor is the default constructor, which sets the DwMessage object's string representation to the empty string and sets its parent to NULL.
The second constructor is the copy constructor, which performs a deep copy of aMessage. The parent of the new DwMessage object is set to NULL.
The third constructor copies aStr to the DwMessage object's string representation and sets aParent as its parent. The virtual member function Parse() should be called immediately after this constructor in order to parse the string representation.
const DwMessage& operator = (const DwMessage& aMessage)
This is the assignment operator, which performs a deep copy of aMessage. The parent node of the DwMessage object is not changed.
virtual DwMessageComponent* Clone() const
This virtual function, inherited from DwMessageComponent, creates a new DwMessage on the free store that has the same value as this DwMessage object. The basic idea is that of a ``virtual copy constructor.''
static DwMessage* NewMessage(const DwString& aStr, DwMessageComponent* aParent)
Creates a new DwMessage object on the free store. If the static data member sNewMessage is NULL, this member function will create a new DwMessage and return it. Otherwise, NewMessage() will call the user-supplied function pointed to by sNewMessage, which is assumed to return an object from a class derived from DwMessage, and return that object.
virtual void PrintDebugInfo(ostream& aStrm, int aDepth=0) const
This virtual function, inherited from DwMessageComponent, prints debugging information about this object to aStrm. It will also call PrintDebugInfo() for any of its child components down to a level of aDepth.
This member function is available only in the debug version of the library.
static DwMessage* (*sNewMessage)(const DwString&, DwMessageComponent*)
If sNewMessage is not NULL, it is assumed to point to a user supplied function that returns an object from a class derived from DwMessage.