backupandrestore/backupengine/src/sblog.cpp
changeset 0 d0791faffa3f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/backupandrestore/backupengine/src/sblog.cpp	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,157 @@
+// Copyright (c) 2004-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:
+// Implementation of logging functions
+// 
+//
+
+/**
+ @file
+*/
+
+#include "sblog.h"
+
+namespace conn
+	{
+	
+	namespace securebackuplog 
+		{
+        #if (defined(SBE_LOGGING_DEBUG_ONLY) && defined(_DEBUG)) || defined(SBE_LOGGING_DEBUG_AND_RELEASE)
+
+        /** The flogger directory
+    	@internalComponent */    
+    	_LIT(KLogDirectory,"connect");
+
+    	/** The flogger file
+    	 @internalComponent */
+        _LIT(KLogFile, "securebackup.txt");
+
+        /** The maximum length of text that can be logged
+    	 @internalComponent */
+    	const TInt KMaxLogData = 0x200;
+    
+        void __LogRaw( TDes& aData )
+        /** Performs the logging operation based upon SBEngine.mmh macro configuration
+		@param aData The data to be logged
+        */
+            {
+		    #if defined(SBE_LOGGING_METHOD_FLOGGER)
+	        	RFileLogger::Write(KLogDirectory, KLogFile, EFileLoggingModeAppend, aData);
+	    	#endif    
+
+            #if defined(SBE_LOGGING_METHOD_RDEBUG) || defined(SBE_LOGGING_METHOD_UI)
+            
+            /** The logging component name
+    		 @internalComponent */
+        	_LIT(KLogComponentName, "[SBE] ");
+        	
+                aData.Insert( 0, KLogComponentName );
+
+                #if defined( SBE_LOGGING_METHOD_UI )
+                    User::InfoPrint( aData );
+                #endif
+            	#if defined( SBE_LOGGING_METHOD_RDEBUG )
+                	RDebug::Print( _L("%S"), &aData );
+            	#endif
+            #endif
+            }
+
+
+
+
+		void __Log( TRefByValue<const TDesC> aFmt, ... )	
+	 	/** Logs a message to FLOGGER and to the UI depending on
+	 	controlling macros.
+	 	
+	 	Note that FLOG macros are probably disabled in release builds, 
+	 	so we might need to use something else for logging to files
+
+		@internalComponent
+		@param aFmt The formatting codes
+        */
+			{
+			VA_LIST list;
+		    VA_START(list,aFmt);
+		    
+		    TBuf< KMaxLogData > buf;
+		    buf.FormatList(aFmt,list); 
+		    
+            __LogRaw( buf );
+			}
+
+
+        void __DebugDump( const TDesC& aFormat, const TUint8* aAddress, TInt aLength )
+        /** Logs binary data as ASCII (hex encoded). Useful for debugging data transfer
+        @param aFormat The format specifier, must always include a string format identifer, i.e. <code>%S</code>
+        @param aAddress The starting memory address containing data that is to be logged
+        @param aLength The amount of data (in bytes) to log, starting at <code>aAddress</code>
+        */
+            {
+        	_LIT( KEndOfAddressText, ": ");
+            _LIT( KDoubleSpace, "  " );
+            _LIT( KSingleSpace, " " );
+
+            TInt len = aLength;
+            const TInt maxLen = aLength;
+            const TUint8* pDataAddr = aAddress;
+
+            TBuf<KMaxLogData> formatBuffer;
+        	TBuf<81> out;
+        	TBuf<20> ascii;
+        	TInt offset = 0;
+        	const TUint8* a = pDataAddr;
+            //
+        	while(len>0)
+        		{
+        		out.Zero();
+        		ascii.Zero();
+        		out.AppendNumFixedWidth((TUint) a, EHex, 8);
+        		out.Append( KEndOfAddressText );
+
+                TUint b;
+        		for (b=0; b<16; b++)
+        			{
+                    TUint8 c = ' ';
+                    if	((pDataAddr + offset + b) < pDataAddr + maxLen)
+        	            {
+        	            c = *(pDataAddr + offset + b);
+        				out.AppendNumFixedWidth(c, EHex, 2);
+        	            }
+                    else
+        	            {
+        				out.Append( KDoubleSpace );
+        	            }
+
+                    out.Append( KSingleSpace );
+
+                    if (c<0x20 || c>=0x7f || c=='%')
+        				c=0x2e;
+
+                    ascii.Append(TChar(c));
+        			}
+        		
+                out.Append(ascii);
+                out.ZeroTerminate();
+
+                formatBuffer.Format( aFormat, &out );
+                __LogRaw( formatBuffer );
+
+                a += 16;
+        		offset += 16;
+        		len -= 16;
+                }
+            }
+			
+        #endif
+		}//securebackuplog
+	}