Msrp/MsrpHeader/inc/CMsrpStatusHeader.h
author Petteri Saari <petteri.saari@digia.com>
Thu, 25 Nov 2010 13:59:42 +0200
branchMSRP_FrameWork
changeset 58 cdb720e67852
child 59 b365c991829c
permissions -rw-r--r--
This release addresses the following issues: 1. The crash bug fix when receiving file 2. Now the sending is based on MSRP messages, there is no longer file receiving or sending. Client sends data as MSRP was designed. 3. Soma MSRP stack was created so that the client told the correct session-id, Symbian stack generated it by itself. This is not allowed, it was changed so that clients tell the session-id (same as used in SIP INVITE). 4. Unnecessary division of data to chunks removed when there is no need to interrupt sending. The message is sent in as few chunks as possible. 5. Stack can now receive files and chunks with ?unlimited? size. Old stack wrote the incoming data to memory and did not utilize disk space until the end of chunk was reached (large chunks from another client crashed it). 6. Now when writing the incoming data to file, it will take into account the byte-range header values. So, this complies with the RFC4975 requirements that stack must be able to handle chunks that come in any sequence. 7. Some buffering changes to outgoing/incoming data. 8. The outgoing data is now checked that it does not contain the created transaction-id before sending the data. 9. MSRP success reports are now implemented and tested against servers. 10. Progress report system fixed so progress is now visible on client (all the way to 100%). 11. Message Cancel receiving / Cancel sending now corrected and made to work as rfc4975 requires. (termination from sender and error code from receiver when cancelling). 12. Bug correction related to messages received not belonging to any session, old stack implementation did send error response, but after response was written it did give the buffer to client anyway. Now corrected.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     1
/*
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     2
* =============================================================================
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     3
*  Name        : CMsrpStatusHeader.h
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     4
*  Part of     : MSRP Client
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     5
*  Interface   : SDK API, MSRP API
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     6
*  Description :
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     7
*  Version     : %version: 1 % << Don't touch! Updated by Synergy at check-out.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     8
*
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     9
*  Copyright © 2007 Nokia. All rights reserved.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    10
*  This material, including documentation and any related
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    11
*  computer programs, is protected by copyright controlled by
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    12
*  Nokia Corporation. All rights are reserved. Copying,
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    13
*  including reproducing, storing, adapting or translating, any
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    14
*  or all of this material requires the prior written consent of
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    15
*  Nokia Corporation. This material also contains confidential
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    16
*  information which may not be disclosed to others without the
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    17
*  prior written consent of Nokia Corporation.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    18
* =============================================================================
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    19
*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    20
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    21
#ifndef CMSRPSTATUSHEADER_H
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    22
#define CMSRPSTATUSHEADER_H
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    23
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    24
//  INCLUDES
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    25
#include "CMsrpHeaderBase.h"
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    26
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    27
// CONSTANTS
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    28
const TInt KMaxLengthOfStatusCodeValue = 100;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    29
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    30
// CLASS DECLARATION
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    31
/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    32
* @publishedAll
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    33
*
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    34
* Class provides functions for setting and getting MSRP "Status" header field
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    35
*
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    36
* @lib msrpclient.lib
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    37
*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    38
class CMSRPStatusHeader : public CMSRPHeaderBase
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    39
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    40
	public:	// Constructors and destructor
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    41
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    42
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    43
		* Creates a new instance of CMSRMessageIdHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    44
		* @param aStatusCode status code
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    45
		* @return a new instance of CMSRPStatusHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    46
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    47
		IMPORT_C static CMSRPStatusHeader* NewL( TInt aStatusCode );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    48
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    49
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    50
		* Creates a new instance of CMSRPStatusHeader and puts it to CleanupStack
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    51
		* @param aStatusCode status code
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    52
		* @return a new instance of CMSRPStatusHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    53
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    54
		IMPORT_C static CMSRPStatusHeader* NewLC( TInt aStatusCode );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    55
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    56
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    57
		* Creates a new instance of CMSRMessageIdHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    58
		* @return a new instance of CMSRPStatusHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    59
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    60
		static CMSRPStatusHeader* NewL( );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    61
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    62
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    63
		* Destructor, deletes the resources of CMSRPStatusHeader.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    64
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    65
		IMPORT_C ~CMSRPStatusHeader();
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    66
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    67
	public: // New functions
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    68
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    69
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    70
		* Constructs an instance of a CMSRPStatusHeader from a RReadStream
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    71
		* @param aReadStream a stream containing the value of the
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    72
		*        externalized object (header name not included).
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    73
		* @return an instance of a CMSRPStatusHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    74
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    75
		IMPORT_C static CMSRPStatusHeader*
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    76
			InternalizeValueL( RReadStream& aReadStream );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    77
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    78
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    79
		* Sets the status code value
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    80
		* @param aStatusCode status code
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    81
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    82
		IMPORT_C void SetStatusCode( TInt aStartPos );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    83
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    84
		/**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    85
		* Gets the status code value
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    86
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    87
		IMPORT_C TInt StatusCode( ) const;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    88
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    89
	public: // From CMSRPHeaderBase
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    90
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    91
		IMPORT_C void ExternalizeValueL( RWriteStream& aWriteStream ) const;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    92
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    93
	public: // From CMSRPHeaderBase
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    94
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    95
		RStringF Name() const;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    96
		HBufC8* ToTextValueL() const;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    97
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    98
	private: // Constructors
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    99
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   100
        /**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   101
        * Contructor.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   102
        */
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   103
		CMSRPStatusHeader( );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   104
        /**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   105
        * Contructor.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   106
		* @param aStatusCode status code
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   107
        */
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   108
		CMSRPStatusHeader( TInt aStatusCode );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   109
        /**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   110
        * two-phased contructor.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   111
        */
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   112
        void ConstructL( ) const;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   113
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   114
	private: // new functions
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   115
	    /**
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   116
		* Internalize external object data
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   117
		* @param aReadStream a stream containing the value of the
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   118
		*        externalized object (header name not included).
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   119
		*/
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   120
		void DoInternalizeValueL( RReadStream& aReadStream );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   121
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   122
  	private: // variables
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   123
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   124
		// status code value
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   125
		TInt iStatusCode;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   126
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   127
	__DECLARE_TEST;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   128
	};
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   129
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   130
#endif // CMSRPSTATUSHEADER_H
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   131
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   132
// End of File