Re-merge addition of wapstack to fid bug 1398.
// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
//
#ifndef __CLWSPPDUHANDLER_H__
#define __CLWSPPDUHANDLER_H__
#include <e32std.h>
#include <wapmessage.h>
/**
The connectionless WSP PDU type definition.
@internalComponent
*/
enum TWSPPduType
{
/** the Reply PDU type assignment
*/
EReply =0x04,
/** the Push PDU type assignment
*/
EPush =0x06,
/** the Get PDU type assignment
*/
EGet =0x40,
/** the GetOption PDU type assignment
*/
EGetOptions =0x41,
/** the Gethead PDU type assignment
*/
EGetHead =0x42,
/** the GetDelete PDU type assignment
*/
EGetDelete =0x43,
/** the GetTrace PDU type assignment
*/
EGetTrace =0x44,
/** the Post PDU type assignment
*/
EPost =0x60,
/** the PostPut PDU type assignment
*/
EPostPut =0x61
};
/**
The offset of the transactionID field in WSP PDU.
@internalComponent
*/
const TUint KPDUHeaderTransactionIDOffSet =0;
/**
The offset of the WSP PDU type field in WSP PDU.
@internalComponent
*/
const TUint KPDUHeaderWSPPDUTypeOffSet =1;
/**
The offset of WSP field.
@internalComponent
*/
const TUint KPDUFieldOffset =2;
/**
The length of transactionID+PDUType
@internalComponent
*/
const TUint8 KPDUTransactionIDAndPDUTypeLength =2;
/**
The length of WSP status
@internalComponent
*/
const TUint8 KWSPStatusLength =1;
/**
The mask of top 3 bits in varible length Unsigned integer
@internalComponent
*/
const TUint8 KTop3BitSet = 0x70;
/**
The mask to valide each byte in varible length Unsigned integer
@internalComponent
*/
const TUint8 KWapQuote = 0x7F;
/**
The mask of carry bit in each byte in varible length Unsigned integer
@internalComponent
*/
const TUint8 KCarryBitMask = 0x80;
/**
Maximum length for varible length Unsigned integer
@internalComponent
*/
const TUint8 KMaxUintVarLength = 5;
/**
shift 7 bits for each byte in Uint32
@internalComponent
*/
const TUint8 KUIntVarOctetShift = 7;
class CCLWSPPduHandler
/**
The Connectionless WSP PDU Handler. This class provides a set of static interfaces
for WAP message APIs to pack and unpack the WSP PDU.
For error codes returned by methods in this class, see <wapmsgerr.h>. Most methods can
return a set of general errors, with some returning additional specific errors.
*/
{
public:
public: // Public Interfaces
static void UnpackWSPPduL(HBufC8* aWSPPdu, TWSPPduType& aType, HBufC8*& aWSPHeader, HBufC8*& aBody, TUint8& aId, TWSPStatus& aStatus);
static void PackWSPPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId);
private: // private methods
static void UnpackPushPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody);
static void UnpackReplyPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody, TWSPStatus& aStatus);
static void PackPostPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId);
static void PackGetPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TUint8 aId);
static TInt UintVar(TUint32& aVal, TPtrC8& aBuffer, TUint aOffset);
static HBufC8* UintVarL(const TUint32 aInt);
};
#endif // __CLWSPPDUHANDLER_H__