--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mulwidgets/mullogging/inc/mullogchunk.h Thu Dec 17 08:56:02 2009 +0200
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2006-2007 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: Logging to chunk wrapper for MC Photos
+*
+*/
+
+
+#ifndef T_MULLOGCHUNK_H
+#define T_MULLOGCHUNK_H
+
+// EXTERNAL INCLUDES
+#include <e32std.h>
+#include <f32file.h>
+
+/**
+ * RMulLogUtility.
+ * Encapsulates the use of RChunk for log writing
+ */
+NONSHARABLE_CLASS( RMulLogUtility )
+ {
+ public:
+ /**
+ * Opens the log chunk with given name
+ * @param aName, the full name of the chunk
+ * @param aReadOnly, whether to open in readonly or read-write
+ */
+ TInt Open( const TDesC& aName, TBool aReadOnly );
+
+ /**
+ * Creates the log chunk with given name
+ * @param aName, the full name of the chunk
+ */
+ void CreateL( const TDesC& aName );
+
+ /**
+ * Closes the opened chunk. This needs to be called
+ * before an object of this class goes out of scope
+ */
+ void Close();
+
+ /**
+ * @return the size of the log chunk
+ */
+ TInt ChunkSize();
+
+ /**
+ * @return the chunk unique Id (set by client)
+ */
+ TObjectId Id();
+
+ /**
+ * Sets the unique id for the log chunk
+ * @param aId the id to set for the chunk
+ */
+ void SetId( TObjectId aId );
+
+ /**
+ * @return Current chunk write address
+ */
+ TUint8* CurrentAddress();
+
+ /**
+ * Sets the current write address
+ * @param New write address
+ */
+ void SetCurrentAddress( TUint8* aValue );
+
+ /**
+ * @return Last address written to file
+ */
+ TUint8* LastLoggedAddress();
+
+ /**
+ * Sets the last logged address
+ * @param New last logged address
+ */
+ void SetLastLoggedAddress( TUint8* aValue );
+
+ /**
+ * @return The topmost writable address of the chunk
+ */
+ TUint8* BaseAddress();
+
+ /**
+ * @return The bottom most writable address of the chunk
+ */
+ TUint8* LastAddress();
+
+ private:
+
+ /// Own: chunk to write to
+ RChunk iChunk;
+ };
+
+/**
+ * RMulLogClient.
+ * Client API for log writing to chunk
+ */
+NONSHARABLE_CLASS( RMulLogClient )
+ {
+ public:
+
+ /**
+ * Opens the log chunk with the given unique id
+ * @param aId unique id for the log writing thread
+ */
+ IMPORT_C TInt Open( TObjectId aId );
+
+ /**
+ * Closes the log handle, needs to be called before an
+ * object of this class goes out of scope
+ */
+ IMPORT_C void Close();
+
+ /**
+ * Writes a descriptor to the log
+ * @param aLogEntry the log entry to write
+ */
+ IMPORT_C void Write( const TDesC8& aLogEntry );
+
+ private:
+
+ /// Own: log utility
+ RMulLogUtility iLogUtility;
+
+ };
+
+/**
+ * RMulLogManager.
+ * Management API for log creation and committing to file
+ */
+NONSHARABLE_CLASS( RMulLogManager )
+ {
+ public:
+
+ /**
+ * Creates the log chunks
+ */
+ IMPORT_C void CreateL();
+
+ /**
+ * Releases the log chunks
+ */
+ IMPORT_C void Release();
+
+ /**
+ * Writes the log to a file
+ * One file is created per chunk.
+ * @param aFolder the directory where to store the logs
+ */
+ IMPORT_C void CommitToFileL( const TDesC& aFolder );
+
+ private:
+
+ // helper method to write all descriptors of a chunk to a
+ // file
+ void CommitToFileL( RMulLogUtility& aUtility, RFile& aFile );
+
+ private:
+
+ /// Own: log utility
+ RMulLogUtility iLogUtility1;
+ /// Own: log utility
+ RMulLogUtility iLogUtility2;
+ /// Own: file server handle
+ RFs iFs;
+
+ };
+
+#endif // T_MULLOGCHUNK_H
+
+
\ No newline at end of file