--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/obexmtms/TObexMTM/SRC/AddHeadersState.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,128 @@
+// 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:
+// $Workfile: AddHeadersState.cpp $
+//
+//
+
+#include "AddHeadersState.h"
+
+#include "obexharness.h"
+#include "obextestutils.h"
+
+#include <obexheaderlist.h>
+
+
+CAddHeadersState::CAddHeadersState(const CObexHeader::THeaderType aHeaderType, const TUint8 aHeaderHI, const TDesC& aHeaderHV, CObexClientTest& aClientTest) :
+iClientTest(aClientTest),
+iHeaderType(aHeaderType),
+iHeaderHI(aHeaderHI)
+ {
+ // Setup the header data buffer.
+ iHeaderHV = HBufC::NewL(aHeaderHV.Length());
+ iHeaderHV->Des().Copy(aHeaderHV);
+ }
+//
+
+CAddHeadersState::~CAddHeadersState()
+ {
+ delete iHeaderHV;
+ }
+//
+
+void CAddHeadersState::StartL(TRequestStatus& aStatus)
+ {
+
+ // Create a new obex header.
+ CObexHeader* header = CObexHeader::NewL();
+ CleanupStack::PushL(header);
+
+ // Process the header data type depending on type.
+ switch (iHeaderType)
+ {
+ case CObexHeader::EUnicode:
+ {
+ header->SetUnicodeL(iHeaderHI, iHeaderHV->Des());
+
+ break;
+ }
+
+ case CObexHeader::EByteSeq:
+ {
+ // Convert the 16 bit string to 8 bit string.
+
+ // Src
+ TPtrC ptrHeaderHV(iHeaderHV->Des());
+
+ // Dst
+ HBufC8* byteSeqHV = HBufC8::NewMaxLC(iHeaderHV->Length());
+ TPtr8 ptrByteSeqHV(byteSeqHV->Des());
+
+ TInt i = 0;
+ while (i < iHeaderHV->Length())
+ {
+ ptrByteSeqHV[i] = (TUint8)ptrHeaderHV[i];
+ i++;
+ }
+ header->SetByteSeqL(iHeaderHI, byteSeqHV->Des());
+
+ CleanupStack::PopAndDestroy(byteSeqHV);
+ break;
+ }
+
+ case CObexHeader::EByte:
+ {
+ TUint8 byteHV = 0;
+ TLex lex(iHeaderHV->Des());
+
+ lex.Inc(2); // Jump '0x'.
+ User::LeaveIfError(lex.Val(byteHV, EHex));
+ header->SetByte(iHeaderHI, byteHV);
+ break;
+ }
+
+ case CObexHeader::EFourByte:
+ {
+ TUint32 fourByteHV = 0;
+ TLex lex(iHeaderHV->Des());
+
+ lex.Inc(2); // Jump '0x'.
+ User::LeaveIfError(lex.Val(fourByteHV, EHex));
+ header->SetFourByte(iHeaderHI, fourByteHV);
+ break;
+ }
+
+ default:
+ User::Leave(KErrUnknown);
+ }
+
+ // Add header to the current headers list.
+ CObexHeaderList* currentHeaders = iClientTest.CurrentHeaders();
+ User::LeaveIfError(currentHeaders->AddHeader(header));
+
+ // Make a dupilcate header and add to the verify headers list.
+ CObexHeader* dupHeader = CObexHeader::NewL();
+ CleanupStack::PushL(dupHeader);
+
+ dupHeader->Set(header);
+
+ CObexTestHeaderList* verifyHeaders = iClientTest.VerifyHeaders();
+ User::LeaveIfError(verifyHeaders->AddHeader(dupHeader));
+
+ CleanupStack::Pop(dupHeader);
+ CleanupStack::Pop(header);
+
+ // Complete the state.
+ TRequestStatus* status = &aStatus;
+ User::RequestComplete(status, KErrNone);
+ }