williamr@2: /* williamr@2: * Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * Name : sipresponseelements.h williamr@2: * Part of : SIP Client williamr@2: * Interface : SDK API, SIP API williamr@2: * Version : 1.0 williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef CSIPRESPONSEELEMENTS_H williamr@2: #define CSIPRESPONSEELEMENTS_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: #include "_sipcodecdefs.h" williamr@2: williamr@2: // FORWARD DECLARATIONS williamr@2: class CSIPMessageElements; williamr@2: class CSIPFromHeader; williamr@2: class CSIPToHeader; williamr@2: class CSIPCSeqHeader; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * @publishedAll williamr@2: * @released williamr@2: * williamr@2: * Class provides services for creating and manipulating SIP responses williamr@2: * This class is used for creating and manipulating SIP responses including williamr@2: * status code, reason phrase and optional elements such user headers, williamr@2: * content and its type. williamr@2: * williamr@2: * @lib sipclient.lib williamr@2: */ williamr@2: class CSIPResponseElements : public CBase williamr@2: { williamr@2: public: // Constructors and destructor williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: * @pre aStatusCode > 100 && aStatusCode < 700 williamr@2: * @param aStatusCode a known SIP response status code. Cannot be 100. williamr@2: * @param aReasonPhrase a SIP response reason phrase. williamr@2: */ williamr@2: IMPORT_C static CSIPResponseElements* NewL(TUint aStatusCode, williamr@2: RStringF aReasonPhrase); williamr@2: williamr@2: /** williamr@2: * Two-phased constructor. williamr@2: * @pre aStatusCode > 100 && aStatusCode < 700 williamr@2: * @param aStatusCode a known SIP response status code. Cannot be 100. williamr@2: * @param aReasonPhrase a SIP response reason phrase. williamr@2: */ williamr@2: IMPORT_C static CSIPResponseElements* NewLC(TUint aStatusCode, williamr@2: RStringF aReasonPhrase); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C ~CSIPResponseElements(); williamr@2: williamr@2: public: // New functions williamr@2: /** williamr@2: * Sets a SIP Response extension status code. It is not possible to set williamr@2: * value 100. williamr@2: * @pre aStatusCode > 100 && aStatusCode < 700 williamr@2: * @param aStatusCode extension status code williamr@2: * @leave KErrArgument if aStatusCode < 100 or aStatusCode >= 700 williamr@2: */ williamr@2: IMPORT_C void SetStatusCodeL(TUint aStatusCode); williamr@2: williamr@2: /** williamr@2: * Gets the SIP Response status code williamr@2: * @return SIP Response status code williamr@2: */ williamr@2: IMPORT_C TUint StatusCode() const; williamr@2: williamr@2: /** williamr@2: * Sets a SIP Response Reason Phrase. williamr@2: * @param aReasonPhrase a SIP response reason phrase. williamr@2: */ williamr@2: IMPORT_C void SetReasonPhraseL(RStringF aReasonPhrase); williamr@2: williamr@2: /** williamr@2: * Gets a SIP Response Reason Phrase. williamr@2: * @return a SIP response reason phrase or an empty string if williamr@2: * the reason phrase is not defined. williamr@2: */ williamr@2: IMPORT_C RStringF ReasonPhrase() const; williamr@2: williamr@2: /** williamr@2: * Gets the originator's From-header williamr@2: * @return a From-header or a 0-pointer if not present. Ownership is williamr@2: * not transferred. williamr@2: */ williamr@2: IMPORT_C const CSIPFromHeader* FromHeader() const; williamr@2: williamr@2: /** williamr@2: * Gets the recipient's To-header williamr@2: * @return a To-header or a 0-pointer if not present. Ownership is williamr@2: * not transferred. williamr@2: */ williamr@2: IMPORT_C const CSIPToHeader* ToHeader() const; williamr@2: williamr@2: /** williamr@2: * Gets CSeq-header williamr@2: * @return a CSeq-header or a 0-pointer if not present. Ownership is williamr@2: * not transferred. williamr@2: */ williamr@2: IMPORT_C const CSIPCSeqHeader* CSeqHeader() const; williamr@2: williamr@2: /** williamr@2: * Gets message elements (contains all SIP user headers and content) williamr@2: * @return message elements williamr@2: */ williamr@2: IMPORT_C const CSIPMessageElements& MessageElements() const; williamr@2: williamr@2: /** williamr@2: * Gets message elements (contains all SIP user headers and content) williamr@2: * The response elements can be populated with SIP user headers williamr@2: * and content using returned reference to the message elements. williamr@2: * @return message elements williamr@2: */ williamr@2: IMPORT_C CSIPMessageElements& MessageElements(); williamr@2: williamr@2: public: // New functions, for internal use williamr@2: static CSIPResponseElements* InternalizeL (RReadStream& aReadStream); williamr@2: static CSIPResponseElements* InternalizeLC (RReadStream& aReadStream); williamr@2: void ExternalizeL (RWriteStream& aWriteStream) const; williamr@2: williamr@2: private: williamr@2: CSIPResponseElements(); williamr@2: void ConstructL(TUint aStatusCode, RStringF aReasonPhrase); williamr@2: void DoInternalizeL (RReadStream& aReadStream); williamr@2: williamr@2: private: // Data williamr@2: TUint iStatusCode; williamr@2: RStringF iReasonPhrase; williamr@2: CSIPMessageElements* iMessageElements; williamr@2: }; williamr@2: williamr@2: #endif // end of CSIPRESPONSEELEMENTS_H