authorisation/userpromptutils/upsnotifierutil/source/upsnotifierutil.cpp
changeset 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/authorisation/userpromptutils/upsnotifierutil/source/upsnotifierutil.cpp	Thu Sep 10 14:01:51 2009 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+#include "upsnotifierutil.h"
+
+using namespace UserPromptService;
+
+EXPORT_C CPromptData* CPromptData::NewL() 
+/**
+Factory function that creates a new, blank CPromptData object.
+@return A pointer to the new CPromptData object.
+*/
+	{
+	CPromptData* self = new(ELeave) CPromptData();
+	return self;
+	}
+
+CPromptData::CPromptData()
+/**
+ Constructor
+ */
+	{
+	}
+
+CPromptData::~CPromptData()
+/**
+ Destructor
+ */
+	{
+	Reset();
+	}
+	
+void CPromptData::Reset() 
+/**
+Frees all internal memory in-case the object is internalised multiple times.
+*/
+	{
+	iClientName.Close();
+	iVendorName.Close();
+	iClientSid.iId = 0;
+	iServerSid.iId = 0;
+	iServiceId.iUid = 0;
+	iDestination.Close();
+	iOpaqueData.Close();
+	iDescriptions.ResetAndDestroy();	
+	}
+
+EXPORT_C void CPromptData::InternalizeL(RReadStream& aStream)
+/**
+ Internalizes the prompt data from the specified stream/
+ @param aStream The read stream
+*/
+	{
+	Reset();
+	iClientName.CreateL(aStream, KMaskDesLength16);
+	iVendorName.CreateL(aStream, KMaskDesLength16);
+	aStream >> iClientSid.iId;
+	aStream >> iServerSid.iId;
+	aStream >> iServiceId.iUid;
+	iDestination.CreateL(aStream, KMaskDesLength16);
+	iOpaqueData.CreateL(aStream, KMaskDesLength8);
+	
+	TInt32 count = aStream.ReadUint32L();
+		
+	for (TInt i = 0; i < count; ++i)
+		{
+		TInt32 l = aStream.ReadInt32L();
+		HBufC* d = HBufC::NewMaxLC(l);
+		TPtr wptr = d->Des();
+		aStream.ReadL(wptr, l);
+		iDescriptions.AppendL(d);
+		CleanupStack::Pop(d);
+		}
+	aStream >> iOptions;
+	aStream >> iFlags;
+	}
+
+EXPORT_C void CPromptData::ExternalizeL(RWriteStream& aStream) const
+/**
+ Externalizes the prompt data to the specified stream.
+ @param aStream The write stream.
+ */
+	{
+	aStream << iClientName;
+	aStream << iVendorName;
+	aStream << iClientSid.iId;
+	aStream << iServerSid.iId;
+	aStream << iServiceId.iUid;
+	aStream << iDestination;
+	aStream << iOpaqueData;
+	TInt count = iDescriptions.Count();
+	aStream.WriteUint32L(count);
+	
+	for (TInt i = 0; i < count; ++i)
+		{
+		aStream.WriteInt32L(iDescriptions[i]->Length());
+		aStream.WriteL(*iDescriptions[i]);
+		}
+	aStream << iOptions;
+	aStream << iFlags;
+	}