--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/src/ncdinstallinfo.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 2006 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: CNcdInstallInfo implementation
+*
+*/
+
+
+#include <s32strm.h>
+
+#include "ncdinstallinfo.h"
+#include "ncdfileinfo.h"
+#include "catalogsdebug.h"
+#include "catalogsutils.h"
+#include "ncdpanics.h"
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdInstallInfo* CNcdInstallInfo::NewL( CNcdFileInfo* aInfo,
+ TNcdInstallType aType )
+ {
+ CNcdInstallInfo* self = NewLC( aInfo, aType );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdInstallInfo* CNcdInstallInfo::NewLC( CNcdFileInfo* aInfo,
+ TNcdInstallType aType )
+ {
+ CNcdInstallInfo* self = new(ELeave) CNcdInstallInfo( aType );
+ CleanupStack::PushL( self );
+ self->ConstructL( aInfo );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdInstallInfo* CNcdInstallInfo::NewLC( RReadStream& aStream )
+ {
+ CNcdInstallInfo* self = new(ELeave) CNcdInstallInfo( ENcdInstallNormal );
+ CleanupStack::PushL( self );
+ self->InternalizeL( aStream );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdInstallInfo::~CNcdInstallInfo()
+ {
+ iFiles.ResetAndDestroy();
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallInfo::AddFileInfoL( CNcdFileInfo* aInfo )
+ {
+ DLTRACEIN((""));
+ NCD_ASSERT_ALWAYS( aInfo, ENcdPanicInvalidArgument );
+ iFiles.AppendL( aInfo );
+ DLTRACEOUT((""));
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CNcdInstallInfo::FileInfoCount() const
+ {
+ return iFiles.Count();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdFileInfo& CNcdInstallInfo::FileInfo( TInt aIndex )
+ {
+ NCD_ASSERT( aIndex >= 0 && aIndex < FileInfoCount(),
+ ENcdPanicIndexOutOfRange );
+ return *iFiles[aIndex];
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+const CNcdFileInfo& CNcdInstallInfo::FileInfo( TInt aIndex ) const
+ {
+ NCD_ASSERT( aIndex >= 0 && aIndex < FileInfoCount(),
+ ENcdPanicIndexOutOfRange );
+ return *iFiles[aIndex];
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdInstallInfo::TNcdInstallType CNcdInstallInfo::InstallType() const
+ {
+ return iType;
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt32 CNcdInstallInfo::Index() const
+ {
+ DLTRACEIN(("Index: %d", iIndex ));
+ return iIndex;
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallInfo::SetIndex( TInt32 aIndex )
+ {
+ DLTRACEIN(("index: %d", aIndex));
+ iIndex = aIndex;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallInfo::InternalizeL( RReadStream& aStream )
+ {
+ DLTRACEIN((""));
+
+ // read type
+ iType = static_cast<TNcdInstallType>( aStream.ReadInt32L() );
+ iIndex = aStream.ReadInt32L();
+ TInt count = aStream.ReadInt32L();
+ iFiles.ResetAndDestroy();
+ iFiles.ReserveL( count );
+ DLINFO(( "File count: %d", count ));
+ while ( count )
+ {
+ DLTRACE(("Internalizing fileinfo"));
+ CNcdFileInfo* info = CNcdFileInfo::NewLC( aStream );
+ iFiles.AppendL( info );
+ CleanupStack::Pop( info );
+ --count;
+ }
+ DLTRACEOUT((""));
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallInfo::ExternalizeL( RWriteStream& aStream ) const
+ {
+ DLTRACEIN((""));
+ // write type
+ aStream.WriteInt32L( iType );
+ aStream.WriteInt32L( iIndex );
+
+ TInt count = FileInfoCount();
+ DLINFO(( "File count: %d", count ));
+ // write file infos
+ aStream.WriteInt32L( count );
+
+ for ( TInt i = 0; i < count; ++i )
+ {
+ iFiles[i]->ExternalizeL( aStream );
+ }
+
+ DLTRACEOUT((""));
+ }
+
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallInfo::ExternalizeWithoutFilenamesL(
+ RWriteStream& aStream ) const
+ {
+ DLTRACEIN((""));
+ // write type
+ aStream.WriteInt32L( iType );
+ aStream.WriteInt32L( iIndex );
+
+ TInt count = FileInfoCount();
+ DLINFO(( "File count: %d", count ));
+ // write file infos
+ aStream.WriteInt32L( count );
+
+ for ( TInt i = 0; i < count; ++i )
+ {
+ iFiles[i]->ExternalizeWithoutFilenamesL( aStream );
+ }
+
+ DLTRACEOUT((""));
+
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CNcdInstallInfo::CNcdInstallInfo( TNcdInstallType aType ) : iType( aType )
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CNcdInstallInfo::ConstructL( CNcdFileInfo* aInfo )
+ {
+ if ( aInfo )
+ {
+ AddFileInfoL( aInfo );
+ }
+ }
+
+