--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/src/fmbkupengine/src/CMMCScBkupIndexDataOwners.cpp Fri Apr 16 14:53:38 2010 +0300
@@ -0,0 +1,210 @@
+/*
+* Copyright (c) 2005 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: CMMCScBkupIndexDataOwners implementation
+*
+*
+*/
+
+#include "CMMCScBkupIndexDataOwners.h"
+
+// User includes
+#include "MMMCScBkupArchiveDataInterface.h"
+
+// Constants
+const TInt KMMCScBkupDataOwnerIndexGranularity = 50;
+
+
+ /**
+ * Registration Data
+ * =================
+ *
+ * This is the format of the data written by the
+ * CMMCScBkupStateGetDataOwners object
+ *
+ *
+ * REG DATA for DO 0
+ * {
+ * RD for DO 0, 1st drive
+ * RD for DO 0, 2nd drive
+ * RD for DO 0, 'n'th drive
+ * },
+ * REG DATA for DO 1
+ * {
+ * RD for DO 0, 1st drive
+ * RD for DO 0, 2nd drive
+ * RD for DO 0, 'n'th drive
+ * },
+ * REG DATA for DO n
+ * {
+ * RD for DO 0, 1st drive
+ * RD for DO 0, 2nd drive
+ * RD for DO 0, 'n'th drive
+ * }
+ *
+ * Registration Data Index
+ * =======================
+ *
+ * This is the format of the data written by this method.
+ * The format allows the possibility of a future partial
+ * restore (hopefully).
+ *
+ *
+ * 4 bytes = count of data owners
+ *
+ * FOR EACH DATA OWNER
+ * {
+ * 4 bytes = secure id of data owner's process
+ * 4 bytes = the number of different registration data files
+ * for this particular data owner (one for each drive that
+ * was backed up)
+ * ENTRY
+ * {
+ * 1 byte = Associated TDriveNumber of the registration data
+ * n bytes = raw drive data
+ * }
+ * }
+ *
+ *
+ **/
+
+
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupIndexDataOwners::CMMCScBkupIndexDataOwners()
+//
+// C++ constructor.
+// ---------------------------------------------------------------------------
+CMMCScBkupIndexDataOwners::CMMCScBkupIndexDataOwners()
+: CMMCScBkupIndexBase( EMMCScBkupOwnerDataTypeDataOwner ), iEntries( KMMCScBkupDataOwnerIndexGranularity )
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupIndexDataOwners::~CMMCScBkupIndexDataOwners()
+//
+// Destructor.
+// ---------------------------------------------------------------------------
+CMMCScBkupIndexDataOwners::~CMMCScBkupIndexDataOwners()
+ {
+ iEntries.Close();
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupIndexDataOwners::NewLC()
+//
+//
+// ---------------------------------------------------------------------------
+CMMCScBkupIndexDataOwners* CMMCScBkupIndexDataOwners::NewLC()
+ {
+ CMMCScBkupIndexDataOwners* self = new(ELeave) CMMCScBkupIndexDataOwners();
+ CleanupStack::PushL(self);
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupIndexDataOwners::AddIndexRecordL()
+//
+//
+// ---------------------------------------------------------------------------
+void CMMCScBkupIndexDataOwners::AddIndexRecordL( const TMMCScBkupArchiveVector& aInfo )
+ {
+ iEntries.AppendL( aInfo );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupIndexDataOwners::StoreL()
+//
+//
+// ---------------------------------------------------------------------------
+void CMMCScBkupIndexDataOwners::StoreL(MMMCScBkupDriver& aDriver)
+ {
+ MMMCScBkupArchiveDataInterface& archiveDataInterface = aDriver.DrvADI();
+ RWriteStream& stream = archiveDataInterface.ADIWriteStreamUncompressedLC();
+ //
+ stream.WriteInt32L( EStreamFormatVersion1 );
+ stream.WriteInt32L( 0 ); // spare1
+ stream.WriteInt32L( 0 ); // spare2
+ stream.WriteInt32L( 0 ); // spare3
+ //
+ const TInt count = iEntries.Count();
+ stream.WriteInt32L(count);
+ //
+ for(TInt i=0; i<count; i++)
+ {
+ const TMMCScBkupArchiveVector& entry = iEntries[i];
+ stream << entry;
+ //
+ stream.WriteInt32L( 0 ); // spare1
+ stream.WriteInt32L( 0 ); // spare2
+ }
+ //
+ stream.CommitL();
+ CleanupStack::PopAndDestroy(); // stream
+
+ // Update our base class info with the offset to the index
+ const TMMCScBkupArchiveVector& writeInfo = archiveDataInterface.ADICurrentArchiveVectorInfo();
+ SetVector( writeInfo );
+ }
+
+
+// ---------------------------------------------------------------------------
+// CMMCScBkupIndexDataOwners::RestoreL()
+//
+//
+// ---------------------------------------------------------------------------
+void CMMCScBkupIndexDataOwners::RestoreL(MMMCScBkupDriver& aDriver)
+ {
+ MMMCScBkupArchiveDataInterface& archiveDataInterface = aDriver.DrvADI();
+ RReadStream& stream = archiveDataInterface.ADIReadStreamUncompressedLC( Vector().Offset() );
+ //
+ stream.ReadInt32L(); // EStreamFormatVersion1
+ stream.ReadInt32L(); // spare1
+ stream.ReadInt32L(); // spare2
+ stream.ReadInt32L(); // spare3
+ //
+ const TInt count = stream.ReadInt32L();
+ //
+ for(TInt i=0; i<count; i++)
+ {
+ TMMCScBkupArchiveVector entry;
+ stream >> entry;
+ //
+ stream.ReadInt32L(); // spare1
+ stream.ReadInt32L(); // spare2
+ //
+ iEntries.AppendL( entry );
+ }
+ //
+ CleanupStack::PopAndDestroy(); // stream
+ //
+ const TMMCScBkupArchiveVector& readInfo = archiveDataInterface.ADICurrentArchiveVectorInfo();
+ if ( readInfo.Length() > Vector().Length() )
+ {
+ // We've read too much!
+ User::Leave( KErrCorrupt );
+ }
+ }
+
+
+
+
+
+
+