Msrp/MsrpHeader/src/CMsrpFailureReportHeader.cpp
branchMSRP_FrameWork
changeset 25 505ad3f0ce5c
equal deleted inserted replaced
22:f1578314b8da 25:505ad3f0ce5c
       
     1 /*
       
     2 * Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html."
       
     8 * Initial Contributors:
       
     9 * Nokia Corporation - initial contribution.
       
    10 * Contributors:
       
    11 *
       
    12 * Description:
       
    13 * MSRP Implementation
       
    14 *
       
    15 */
       
    16 
       
    17 // CLASS HEADER
       
    18 #include "CMsrpFailureReportHeader.h"
       
    19 
       
    20 // EXTERNAL INCLUDES
       
    21 
       
    22 // INTERNAL INCLUDES
       
    23 #include "msrpstrings.h"
       
    24 #include "msrpstrconsts.h"
       
    25 
       
    26 // -----------------------------------------------------------------------------
       
    27 // CMSRPFailureReportHeader::NewLC
       
    28 // -----------------------------------------------------------------------------
       
    29 //
       
    30 EXPORT_C CMSRPFailureReportHeader* CMSRPFailureReportHeader::NewLC(
       
    31 	const RStringF& aType )
       
    32 	{
       
    33 	CMSRPFailureReportHeader* self = new (ELeave) CMSRPFailureReportHeader();
       
    34     CleanupStack::PushL( self );
       
    35     self->ConstructL( aType );
       
    36     return self;
       
    37 	}
       
    38 
       
    39 // -----------------------------------------------------------------------------
       
    40 // CMSRPFailureReportHeader::NewL
       
    41 // -----------------------------------------------------------------------------
       
    42 //
       
    43 EXPORT_C CMSRPFailureReportHeader* CMSRPFailureReportHeader::NewL(
       
    44 	const RStringF& aType )
       
    45 	{
       
    46 	CMSRPFailureReportHeader* self = CMSRPFailureReportHeader::NewLC( aType );
       
    47 	CleanupStack::Pop( self );
       
    48 	return self;
       
    49 	}
       
    50 
       
    51 // -----------------------------------------------------------------------------
       
    52 // CMSRPFailureReportHeader::NewL
       
    53 // -----------------------------------------------------------------------------
       
    54 //
       
    55 CMSRPFailureReportHeader* CMSRPFailureReportHeader::NewL( )
       
    56 	{
       
    57 	CMSRPFailureReportHeader* self = new (ELeave) CMSRPFailureReportHeader();
       
    58     CleanupStack::PushL( self );
       
    59     self->ConstructL( );
       
    60 	CleanupStack::Pop( self );
       
    61     return self;
       
    62 	}
       
    63 
       
    64 // -----------------------------------------------------------------------------
       
    65 // CMSRPFailureReportHeader::CMSRPFailureReportHeader
       
    66 // -----------------------------------------------------------------------------
       
    67 //
       
    68 CMSRPFailureReportHeader::CMSRPFailureReportHeader()
       
    69     {
       
    70 	}
       
    71 
       
    72 // -----------------------------------------------------------------------------
       
    73 // CMSRPFailureReportHeader::ConstructL
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 void CMSRPFailureReportHeader::ConstructL(
       
    77 	RStringF aType )
       
    78 	{
       
    79 	MSRPStrings::OpenL();
       
    80 	iReportType = aType.Copy();
       
    81 	}
       
    82 
       
    83 // -----------------------------------------------------------------------------
       
    84 // CMSRPFailureReportHeader::ConstructL
       
    85 // -----------------------------------------------------------------------------
       
    86 //
       
    87 void CMSRPFailureReportHeader::ConstructL( )
       
    88 	{
       
    89 	MSRPStrings::OpenL();
       
    90 	}
       
    91 
       
    92 // -----------------------------------------------------------------------------
       
    93 // CMSRPFailureReportHeader::~CMSRPFailureReportHeader
       
    94 // -----------------------------------------------------------------------------
       
    95 //
       
    96 EXPORT_C CMSRPFailureReportHeader::~CMSRPFailureReportHeader()
       
    97 	{
       
    98 	MSRPStrings::Close();
       
    99 	}
       
   100 
       
   101 // -----------------------------------------------------------------------------
       
   102 // CMSRPFailureReportHeader::InternalizeValueL
       
   103 // -----------------------------------------------------------------------------
       
   104 //
       
   105 EXPORT_C CMSRPFailureReportHeader* CMSRPFailureReportHeader::InternalizeValueL(
       
   106 	RReadStream& aReadStream )
       
   107 	{
       
   108 	CMSRPFailureReportHeader* self = CMSRPFailureReportHeader::NewL( );
       
   109 	CleanupStack::PushL( self );
       
   110 	self->DoInternalizeValueL( aReadStream );
       
   111 	CleanupStack::Pop( self );
       
   112 	return self;
       
   113 	}
       
   114 
       
   115 // -----------------------------------------------------------------------------
       
   116 // CMSRPFailureReportHeader::DoInternalizeValueL
       
   117 // -----------------------------------------------------------------------------
       
   118 //
       
   119 void CMSRPFailureReportHeader::DoInternalizeValueL( RReadStream& aReadStream )
       
   120 	{
       
   121 	// value must be in stringpool
       
   122 	TUint32 valueLength = aReadStream.ReadUint32L();
       
   123     if( valueLength > 0 )
       
   124         {
       
   125 	    HBufC8* tempBuffer = HBufC8::NewLC( valueLength );
       
   126 	    TPtr8 tempValue( tempBuffer->Des() );
       
   127 	    aReadStream.ReadL( tempValue, valueLength );
       
   128 
       
   129 		// let's check if the value matches the supported content-types
       
   130 		RStringF tempString = MSRPStrings::StringF( MSRPStrConsts::EYes );
       
   131 		if( tempString.DesC() == tempValue )
       
   132 			{
       
   133 			// OK
       
   134 			iReportType = tempString.Copy();
       
   135 			}
       
   136 		else
       
   137 			{
       
   138 			RStringF tempStr = MSRPStrings::StringF( MSRPStrConsts::ENo );
       
   139 			if( tempStr.DesC() == tempValue )
       
   140 				{
       
   141 				// OK
       
   142 				iReportType = tempStr.Copy();
       
   143 				}
       
   144 			else
       
   145 				{
       
   146 				RStringF tmpStr = MSRPStrings::StringF( MSRPStrConsts::EPartial );
       
   147 				if( tmpStr.DesC() == tempValue )
       
   148 					{
       
   149 					// OK
       
   150 					iReportType = tmpStr.Copy();
       
   151 					}
       
   152 				else
       
   153 					{
       
   154 					// not supported
       
   155 			        CleanupStack::PopAndDestroy( tempBuffer );
       
   156 					User::Leave( KErrNotSupported );
       
   157 					}
       
   158 				}
       
   159 			}
       
   160         CleanupStack::PopAndDestroy( tempBuffer );
       
   161 		}
       
   162 	}
       
   163 
       
   164 // -----------------------------------------------------------------------------
       
   165 // CMSRPFailureReportHeader::ExternalizeValueL
       
   166 // From CSIPHeaderBase:
       
   167 // -----------------------------------------------------------------------------
       
   168 //
       
   169 void CMSRPFailureReportHeader::ExternalizeValueL( RWriteStream& aWriteStream ) const
       
   170 	{
       
   171 	aWriteStream.WriteInt32L( iReportType.DesC().Length() );
       
   172 	aWriteStream.WriteL( iReportType.DesC() );
       
   173 	}
       
   174 
       
   175 // -----------------------------------------------------------------------------
       
   176 // CMSRPFailureReportHeader::Name
       
   177 // -----------------------------------------------------------------------------
       
   178 //
       
   179 RStringF CMSRPFailureReportHeader::Name() const
       
   180 	{
       
   181 	return MSRPStrings::StringF( MSRPStrConsts::EFailureReport );
       
   182 	}
       
   183 
       
   184 // -----------------------------------------------------------------------------
       
   185 // CMSRPFailureReportHeader::ToTextValueL
       
   186 // -----------------------------------------------------------------------------
       
   187 //
       
   188 HBufC8* CMSRPFailureReportHeader::ToTextValueL() const
       
   189 	{
       
   190     if( iReportType.DesC().Length() )
       
   191         {
       
   192         return iReportType.DesC().AllocL();
       
   193         }
       
   194 	return NULL;
       
   195 	}
       
   196 
       
   197 // End of File