Msrp/MsrpHeader/src/CMsrpStatusHeader.cpp
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.cpp
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     4
*  Part of       : MSRP API
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     5
*  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
     6
*
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     7
*  Copyright © 2007 Nokia. All rights reserved.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     8
*  This material, including documentation and any related
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
     9
*  computer programs, is protected by copyright controlled by
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    10
*  Nokia Corporation. All rights are reserved. Copying,
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    11
*  including reproducing, storing, adapting or translating, any
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    12
*  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
    13
*  Nokia Corporation. This material also contains confidential
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    14
*  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
    15
*  prior written consent of Nokia Corporation.
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    16
* =============================================================================
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    17
*/
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
//CLASS HEADER
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    20
#include "CMsrpStatusHeader.h"
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    21
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    22
// EXTERNAL INCLUDES
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    23
#include "msrpstrings.h"
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    24
#include <msrpstrconsts.h>
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    25
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    26
// EXTERNAL INCLUDES
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    27
#include "MsrpCommon.h"
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    28
#include "TMSRPHeaderUtil.h"
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    29
#include "CMSRPResponse.h"
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    30
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
// CMSRPStatusHeader::NewLC
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
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    35
EXPORT_C CMSRPStatusHeader* CMSRPStatusHeader::NewLC( TInt aStatusCode )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    36
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    37
	CMSRPStatusHeader* self = new (ELeave) CMSRPStatusHeader( aStatusCode );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    38
    CleanupStack::PushL( self );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    39
    self->ConstructL( );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    40
    return self;
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
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    44
// CMSRPStatusHeader::NewL
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    45
// -----------------------------------------------------------------------------
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
EXPORT_C CMSRPStatusHeader* 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
	CMSRPStatusHeader* self = CMSRPStatusHeader::NewLC( aStatusCode );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    50
	CleanupStack::Pop( self );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    51
	return self;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    52
	}
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
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    55
// CMSRPStatusHeader::NewL
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
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    58
CMSRPStatusHeader* CMSRPStatusHeader::NewL( )
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
	CMSRPStatusHeader* self = new (ELeave) CMSRPStatusHeader( );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    61
    CleanupStack::PushL( self );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    62
    self->ConstructL( );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    63
	CleanupStack::Pop( self );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    64
    return self;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    65
	}
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
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    68
// CMSRPStatusHeader::CMSRPStatusHeader
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
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    71
CMSRPStatusHeader::CMSRPStatusHeader( TInt aStatusCode )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    72
	: iStatusCode( aStatusCode )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    73
    {
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
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    76
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    77
// CMSRPStatusHeader::CMSRPStatusHeader
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
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    80
CMSRPStatusHeader::CMSRPStatusHeader( )
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
	}
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
// CMSRPStatusHeader::ConstructL
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
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    88
void CMSRPStatusHeader::ConstructL( ) const
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    89
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    90
	MSRPStrings::OpenL();
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    91
	}
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
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    94
// CMSRPStatusHeader::~CMSRPStatusHeader
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    95
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    96
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    97
EXPORT_C CMSRPStatusHeader::~CMSRPStatusHeader()
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    98
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
    99
	MSRPStrings::Close();
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
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::InternalizeValueL
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
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   106
EXPORT_C CMSRPStatusHeader* CMSRPStatusHeader::InternalizeValueL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   107
	RReadStream& aReadStream )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   108
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   109
	CMSRPStatusHeader* self = CMSRPStatusHeader::NewL( );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   110
	CleanupStack::PushL( self );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   111
	self->DoInternalizeValueL( aReadStream );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   112
	CleanupStack::Pop( self );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   113
	return self;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   114
	}
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
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   117
// CMSRPStatusHeader::SetStartPosition
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   118
// -----------------------------------------------------------------------------
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
EXPORT_C void CMSRPStatusHeader::SetStatusCode( TInt aStatusCode )
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
	iStatusCode = aStatusCode;
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
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   125
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   126
// CMSRPStatusHeader::StatusCode
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   127
// -----------------------------------------------------------------------------
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
EXPORT_C TInt CMSRPStatusHeader::StatusCode( ) const
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   130
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   131
	return iStatusCode;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   132
	}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   133
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   134
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   135
// CMSRPStatusHeader::DoInternalizeValueL
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   136
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   137
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   138
void CMSRPStatusHeader::DoInternalizeValueL( RReadStream& aReadStream )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   139
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   140
	TUint32 valueLength = aReadStream.ReadUint32L();
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   141
    if( valueLength > 0 )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   142
        {
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   143
		HBufC8* tempString = HBufC8::NewLC( valueLength );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   144
	    TPtr8 tempValue( tempString->Des() );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   145
	    aReadStream.ReadL( tempValue, valueLength );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   146
		iStatusCode = TMSRPHeaderUtil::ConvertToNumber( tempString->Des() );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   147
		CleanupStack::PopAndDestroy( tempString );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   148
		}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   149
	else
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   150
		{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   151
		User::Leave( KErrArgument );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   152
		}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   153
	}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   154
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   155
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   156
// CMSRPStatusHeader::ExternalizeValueL
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   157
// From CSIPHeaderBase:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   158
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   159
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   160
void CMSRPStatusHeader::ExternalizeValueL( RWriteStream& aWriteStream ) const
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   161
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   162
	TBuf8< KMaxLengthOfStatusCode > value;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   163
	// status code
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   164
	value.AppendNum( iStatusCode, EDecimal );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   165
	aWriteStream.WriteInt32L( value.Length() );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   166
	aWriteStream.WriteL( value );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   167
	}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   168
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   169
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   170
// CMSRPStatusHeader::Name
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   171
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   172
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   173
RStringF CMSRPStatusHeader::Name() const
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   174
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   175
	return MSRPStrings::StringF( MSRPStrConsts::EStatus );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   176
	}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   177
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   178
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   179
// CMSRPStatusHeader::ToTextValueL
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   180
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   181
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   182
HBufC8* CMSRPStatusHeader::ToTextValueL() const
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   183
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   184
	TBuf8< KMaxLengthOfStatusCodeValue > statusCodeLine;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   185
	TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   186
		MSRPStrings::StringF( MSRPStrConsts::EStatusNameSpace ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   187
	TMSRPHeaderUtil::AppendStringL( KSpaceChar, statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   188
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   189
	statusCodeLine.AppendNum( iStatusCode, EDecimal );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   190
	TMSRPHeaderUtil::AppendStringL( KSpaceChar, statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   191
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   192
	// then is the reason string
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   193
	// possible codes are defined here
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   194
	switch( iStatusCode )
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   195
		{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   196
		case EAllOk:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   197
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   198
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   199
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   200
				MSRPStrConsts::EAllOk ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   201
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   202
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   203
		case EUnintelligibleRequest:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   204
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   205
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   206
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   207
				MSRPStrConsts::EUnintelligibleRequest ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   208
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   209
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   210
		case EActionNotAllowed:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   211
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   212
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   213
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   214
				MSRPStrConsts::EActionNotAllowed ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   215
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   216
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   217
		case ETimeout:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   218
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   219
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   220
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   221
				MSRPStrConsts::ETimeout ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   222
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   223
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   224
		case EStopSending:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   225
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   226
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   227
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   228
				MSRPStrConsts::EStopSending ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   229
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   230
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   231
		case EMimeNotUnderstood:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   232
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   233
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   234
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   235
				MSRPStrConsts::EMimeNotUnderstood ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   236
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   237
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   238
		case EParameterOutOfBounds:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   239
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   240
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   241
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   242
				MSRPStrConsts::EParameterOutOfBounds ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   243
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   244
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   245
		case ESessionDoesNotExist:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   246
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   247
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   248
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   249
				MSRPStrConsts::ESessionDoesNotExist ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   250
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   251
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   252
		case EUnknownRequestMethod:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   253
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   254
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   255
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   256
				MSRPStrConsts::EUnknownRequestMethod ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   257
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   258
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   259
		case ESessionAlreadyBound:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   260
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   261
			TMSRPHeaderUtil::AppendStringL(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   262
				MSRPStrings::StringF(
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   263
				MSRPStrConsts::ESessionAlreadyBound ).DesC(), statusCodeLine );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   264
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   265
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   266
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   267
		default:
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   268
			{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   269
			// not a valid code
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   270
			User::Leave( KErrArgument );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   271
			break;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   272
			}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   273
		}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   274
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   275
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   276
	HBufC8* tempString = HBufC8::NewLC( statusCodeLine.Length() );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   277
	*tempString = statusCodeLine;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   278
	CleanupStack::Pop( tempString );
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   279
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   280
	return tempString;
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   281
	}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   282
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   283
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   284
// CMSRPStatusHeader::__DbgTestInvariant
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   285
// -----------------------------------------------------------------------------
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   286
//
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   287
void CMSRPStatusHeader::__DbgTestInvariant() const
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   288
	{
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   289
#if defined(_DEBUG)
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   290
	// to be defined
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   291
#endif
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   292
	}
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   293
cdb720e67852 This release addresses the following issues:
Petteri Saari <petteri.saari@digia.com>
parents:
diff changeset
   294
// End of File