wapstack/wapmessageapi/sws/CLWSPPduHandler.cpp
author Nithin Vijay <nithin.vjay@nokia.com>
Tue, 20 Apr 2010 17:00:49 +0100
branchRCL_3
changeset 18 50bae5c5c85f
child 45 28dbf5a297f4
permissions -rw-r--r--
Add wapstack/wapmessageapi component, to fix Bug 1398
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     1
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     2
// All rights reserved.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     3
// This component and the accompanying materials are made available
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     5
// which accompanies this distribution, and is available
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     7
//
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     8
// Initial Contributors:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    10
//
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    11
// Contributors:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    12
//
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    13
// Description:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    14
//
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    15
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    16
#include "CLWSPPduHandler.h"
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    17
#include "wapmsgerr.h"
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    18
#include "WapSwsLog.h"
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    19
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    20
void CCLWSPPduHandler::UnpackWSPPduL(HBufC8* aWSPPdu, TWSPPduType& aType, HBufC8*& aWSPHeader, HBufC8*& aBody, TUint8& aId, TWSPStatus& aStatus)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    21
/** 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    22
Unpack the received WSP PDU from remote peer to several data structure expected by the client.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    23
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    24
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    25
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    26
@param aWSPPdu the received WSP PDU from the remote peer. 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    27
@param aType the type of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    28
@param aWSPHeader the WSP header of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    29
@param aBody the data body of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    30
@param aId the transaction ID or Push ID of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    31
@param aStatus the WSP status of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    32
@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    33
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    34
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    35
	TPtr8 des=aWSPPdu->Des();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    36
	if(des.Length() < KPDUTransactionIDAndPDUTypeLength)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    37
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    38
		LOG(SwsLog::Printf(_L("CCLWSPPduHandler::UnpackWSPPduL() Corrupted InComing Wsp PDU"));)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    39
		User::Leave(KErrCorrupt);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    40
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    41
	aId=des[KPDUHeaderTransactionIDOffSet];
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    42
	aType=TWSPPduType(des[KPDUHeaderWSPPDUTypeOffSet]);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    43
	switch (aType)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    44
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    45
	case EReply:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    46
		UnpackReplyPduL(aWSPPdu, aWSPHeader, aBody, aStatus);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    47
		break;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    48
	case EPush:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    49
		UnpackPushPduL(aWSPPdu, aWSPHeader, aBody);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    50
		break;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    51
	default:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    52
		LOG(SwsLog::Printf(_L("CCLWSPPduHandler::UnpackWSPPduL() Unknown InComing Wsp PDU Type"));)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    53
		User::Leave(KErrCorrupt);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    54
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    55
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    56
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    57
void CCLWSPPduHandler::PackWSPPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    58
/** 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    59
Pack the information to be sent into WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    60
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    61
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    62
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    63
@param aWSPPdu the WSP PDU that is to sent 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    64
@param aType the WSP PDU type(the method is to be invoked) 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    65
@param aURI  the URI where the WSP PDU goes
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    66
@param aWSPHeader the WSP header
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    67
@param aBody the data body
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    68
@param aId the transaction ID
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    69
@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    70
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    71
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    72
	switch (aType)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    73
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    74
	case EGet:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    75
	case EGetOptions:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    76
	case EGetHead:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    77
	case EGetDelete:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    78
	case EGetTrace:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    79
		PackGetPduL(aWSPPdu, aType, aURI, aWSPHeader, aId);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    80
		break;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    81
	
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    82
	case EPost:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    83
	case EPostPut:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    84
		PackPostPduL(aWSPPdu, aType, aURI, aWSPHeader, aBody, aId);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    85
		break;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    86
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    87
	default:
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    88
		LOG(SwsLog::Printf(_L("CCLWSPPduHandler::PackWSPPduL() Unknown Method Invoke Wsp PDU Type"));)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    89
		User::Leave(Wap::EWspClParameterError);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    90
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    91
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    92
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    93
void CCLWSPPduHandler::UnpackPushPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    94
/**
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    95
Unpack the WSP PUSH PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    96
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    97
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    98
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
    99
@param aWSPPdu the received WSP PDU from the remote peer. 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   100
@param aWSPHeader the WSP header of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   101
@param aBody the data body of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   102
@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   103
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   104
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   105
	TPtrC8 pduBuffer(*aWSPPdu);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   106
	TUint32 pduLength=pduBuffer.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   107
	TUint32 headerLength(0);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   108
	TInt uintvarLength(0);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   109
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   110
	// if uintvarLength less than KErrNone, then it is a error code.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   111
	if ((uintvarLength=UintVar(headerLength, pduBuffer, KPDUTransactionIDAndPDUTypeLength))<KErrNone)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   112
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   113
		User::Leave(uintvarLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   114
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   115
 	TInt32 bodyLength= pduLength-KPDUTransactionIDAndPDUTypeLength-uintvarLength-headerLength;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   116
	if (bodyLength<0)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   117
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   118
		User::Leave(KErrCorrupt);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   119
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   120
	// Extract the WSP Header.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   121
	aWSPHeader=HBufC8::NewL(headerLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   122
	TPtr8 headerDes=aWSPHeader->Des();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   123
	headerDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+uintvarLength, headerLength));
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   124
	// Extract the WSP data body.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   125
	aBody=HBufC8::NewL(bodyLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   126
	TPtr8 bodyDes=aBody->Des();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   127
	bodyDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+uintvarLength+headerLength));
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   128
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   129
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   130
void CCLWSPPduHandler::UnpackReplyPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody, TWSPStatus& aStatus)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   131
/**
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   132
Unpack the WSP Reply PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   133
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   134
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   135
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   136
@param aWSPPdu the received WSP PDU from the remote peer. 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   137
@param aWSPHeader the WSP header of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   138
@param aBody the data body of the received WSP PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   139
@param aStatus the WSP status of the received WSP PDU.  
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   140
@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   141
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   142
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   143
	TPtrC8 pduBuffer(*aWSPPdu);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   144
	TUint32 pduLength=pduBuffer.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   145
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   146
	//Extract the WSP status
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   147
	aStatus=pduBuffer[KPDUTransactionIDAndPDUTypeLength];
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   148
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   149
	TUint32 headerLength(0);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   150
	TInt uintvarLength(0);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   151
	// if uintvarLength less than KErrNone, then it is a error code.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   152
	if ((uintvarLength=UintVar(headerLength, pduBuffer, KPDUTransactionIDAndPDUTypeLength+KWSPStatusLength))<KErrNone)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   153
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   154
		User::Leave(uintvarLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   155
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   156
		
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   157
	TInt32 bodyLength= pduLength-KPDUTransactionIDAndPDUTypeLength-KWSPStatusLength-uintvarLength-headerLength;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   158
	if (bodyLength<0)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   159
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   160
		User::Leave(KErrCorrupt);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   161
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   162
		
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   163
	// Extract the WSP Header.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   164
	aWSPHeader=HBufC8::NewL(headerLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   165
	TPtr8 headerDes=aWSPHeader->Des();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   166
	headerDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+KWSPStatusLength+uintvarLength, headerLength));
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   167
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   168
	// Extract the WSP data body.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   169
	aBody=HBufC8::NewL(bodyLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   170
	TPtr8 bodyDes=aBody->Des();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   171
	bodyDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+KWSPStatusLength+uintvarLength+headerLength));
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   172
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   173
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   174
void CCLWSPPduHandler::PackPostPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   175
/** 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   176
Pack the WSP Post PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   177
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   178
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   179
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   180
@param aWSPPdu the WSP PDU that is to sent 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   181
@param aType the WSP PDU type(the method is to be invoked) 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   182
@param aURI the URI where the WSP PDU goes
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   183
@param aWSPHeader the WSP header
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   184
@param aBody the data body
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   185
@param aId the transaction ID
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   186
@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   187
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   188
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   189
	//Convert the URI length to Varible length unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   190
	TUint32 uriLength=aURI.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   191
	HBufC8* uriLengthDes=UintVarL(uriLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   192
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   193
	//Convert the URI length to Varible length unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   194
	TUint32 headerLength=aWSPHeader.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   195
	HBufC8* headerLengthDes=UintVarL(headerLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   196
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   197
	// Calculate the pdu length
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   198
	TUint32 pduLength = KPDUTransactionIDAndPDUTypeLength+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   199
						uriLengthDes->Length()+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   200
						headerLengthDes->Length()+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   201
						uriLength+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   202
						headerLength+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   203
						aBody.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   204
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   205
	//Build the PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   206
	aWSPPdu = HBufC8::NewL(pduLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   207
	TPtr8 pduPtr(aWSPPdu->Des());
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   208
	pduPtr.Append(aId);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   209
	pduPtr.Append(aType);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   210
	pduPtr.Append(*uriLengthDes);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   211
	pduPtr.Append(*headerLengthDes);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   212
	pduPtr.Append(aURI);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   213
	pduPtr.Append(aWSPHeader);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   214
	pduPtr.Append(aBody);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   215
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   216
	// delete the temporary buffers
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   217
	delete uriLengthDes;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   218
	delete headerLengthDes;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   219
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   220
void CCLWSPPduHandler::PackGetPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TUint8 aId)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   221
/** 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   222
Pack the WSP Get PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   223
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   224
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   225
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   226
@param aWSPPdu the WSP PDU that is to sent 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   227
@param aType the WSP PDU type(the method is to be invoked) 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   228
@param aURI the URI where the WSP PDU goes
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   229
@param aWSPHeader the WSP header
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   230
@param aId the transaction ID
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   231
@returns KErrNone on successful completion, or one of the system error codes on failure.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   232
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   233
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   234
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   235
	//Convert the URI length to Varible length unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   236
	TUint32 uriLength=aURI.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   237
	HBufC8* uriLengthDes=UintVarL(uriLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   238
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   239
	// Calculate the pdu length
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   240
	TUint32 pduLength =	KPDUTransactionIDAndPDUTypeLength+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   241
						uriLengthDes->Length()+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   242
						uriLength+
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   243
						aWSPHeader.Length();
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   244
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   245
	// Build the PDU.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   246
	aWSPPdu = HBufC8::NewL(pduLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   247
	TPtr8 pduPtr(aWSPPdu->Des());
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   248
	pduPtr.Append(aId);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   249
	pduPtr.Append(aType);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   250
	pduPtr.Append(*uriLengthDes);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   251
	pduPtr.Append(aURI);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   252
	pduPtr.Append(aWSPHeader);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   253
	
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   254
	//Delete the temporary buffer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   255
	delete uriLengthDes;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   256
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   257
TInt CCLWSPPduHandler::UintVar(TUint32& aVal, TPtrC8& aBuffer, TUint aOffset)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   258
/** 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   259
Decode the variable length Unsigned integer to TUint32
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   260
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   261
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   262
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   263
@param aVal the value of the variable length Unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   264
@param aBuffer the descriptor that contains the variable length Unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   265
@param aOffset the offset of the variable length Unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   266
@returns one of the system error codes on failure, or the size of variable length Unsigned integer.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   267
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   268
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   269
	// have we run out of buffer?
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   270
	if (aOffset >= (TUint)aBuffer.Length())
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   271
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   272
		return KErrCorrupt;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   273
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   274
		
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   275
	// maximum length for a uintvar is 5
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   276
	TInt lenLeft = Min(aBuffer.Mid(aOffset).Length(), KMaxUintVarLength);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   277
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   278
	// get the first octet
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   279
	TUint8 byte = aBuffer[aOffset++];
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   280
	TInt numBytes = 1;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   281
	--lenLeft;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   282
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   283
	// Check if any of the top 3 bits, ignoring the very top 'continue' bit, are set.  
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   284
	// Later if we see that this is a 5 byte number - we'll know it is corrupt.  
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   285
	// Encoding uses 7 bits/number 7x5=35 and we only support a maxiumum number 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   286
	// of 32 bits.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   287
	TBool topThreeBitsSet = byte & KTop3BitSet; 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   288
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   289
	// copy over data from the byte into our return value (the top bit is a carry bit)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   290
	aVal = byte & KWapQuote;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   291
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   292
	// while the 'continue' bit is set and we have more data
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   293
	while ((byte & KCarryBitMask) && (lenLeft > 0))
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   294
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   295
		// shift our last value up
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   296
		aVal <<= KUIntVarOctetShift;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   297
		// get the next byte
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   298
		byte = aBuffer[aOffset++];
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   299
		// copy it over to the lowest byte
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   300
		aVal |= byte & KWapQuote;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   301
		--lenLeft;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   302
		++numBytes;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   303
		} 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   304
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   305
	// last octet has continue bit set ... NOT allowed Or
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   306
	// this was encoded wrong - can't have a number bigger than 32 bits
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   307
	if ((byte & KCarryBitMask) || (numBytes == 5 && topThreeBitsSet))
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   308
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   309
		return KErrCorrupt;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   310
		}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   311
	// number of bytes read
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   312
	return numBytes;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   313
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   314
	}
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   315
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   316
HBufC8* CCLWSPPduHandler::UintVarL(const TUint32 aInt)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   317
/** 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   318
Encode the TUint32 to the variable length Unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   319
@internalComponent
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   320
@released 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   321
@since v8.0 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   322
@param aInt the length of the data
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   323
@returns the descriptor that contains the variable length Unsigned integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   324
*/
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   325
	{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   326
	TUint8 size = 0; // maximum value is 5 with a 32bit integer
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   327
	TUint32 value=aInt;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   328
	do {
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   329
		++size;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   330
		value >>=KUIntVarOctetShift; ; // shift by 7 bits.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   331
		} while (value>0);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   332
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   333
	HBufC8* output = HBufC8::NewL(size);
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   334
	TPtr8 outPtr(output->Des());
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   335
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   336
	TInt ii = size; 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   337
	while (--ii > 0)
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   338
		{
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   339
		outPtr.Append( (TUint8)(aInt>>(KUIntVarOctetShift*(ii))  & KWapQuote) | KCarryBitMask); 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   340
		} 
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   341
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   342
	// Finally the first 7 bits, last octet, do not set first bit.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   343
	outPtr.Append( (TUint8)(aInt & KWapQuote) ); // Add even if 0 value.
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   344
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   345
	return output;
50bae5c5c85f Add wapstack/wapmessageapi component, to fix Bug 1398
Nithin Vijay <nithin.vjay@nokia.com>
parents:
diff changeset
   346
	}