diff -r 000000000000 -r 33413c0669b9 vpnengine/kmdserver/src/kmddebuglogger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vpnengine/kmdserver/src/kmddebuglogger.cpp Thu Dec 17 09:14:51 2009 +0200 @@ -0,0 +1,217 @@ +/* +* Copyright (c) 2008-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: Write logs in debug builds +* +*/ + + +// CLASS HEADER +#include "kmddebuglogger.h" + +#if defined(_DEBUG) +_LIT(KLogFolder,"vpn"); +_LIT(KLogFile,"kmd.txt"); +#endif + +// ======== MEMBER FUNCTIONS ======== + +#ifndef _DEBUG +// --------------------------------------------------------------------------- +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CKmdDebugLogger* CKmdDebugLogger::NewL() + { + CKmdDebugLogger* self = new ( ELeave ) CKmdDebugLogger; + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CKmdDebugLogger::~CKmdDebugLogger() + { + } + +#else + +// --------------------------------------------------------------------------- +// Two-phased constructor. +// --------------------------------------------------------------------------- +// +CKmdDebugLogger* CKmdDebugLogger::NewL() + { + CKmdDebugLogger* self = new ( ELeave ) CKmdDebugLogger; + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// Destructor. +// --------------------------------------------------------------------------- +// +CKmdDebugLogger::~CKmdDebugLogger() + { + delete iIkePcapTrace; + iFileLogger.Close(); + } + +// --------------------------------------------------------------------------- +// Second phase construction. +// --------------------------------------------------------------------------- +// +void CKmdDebugLogger::ConstructL() + { + User::LeaveIfError( iFileLogger.Connect() ); + iFileLogger.SetDateAndTime( ETrue, ETrue ); + iFileLogger.CreateLog( KLogFolder, KLogFile, EFileLoggingModeAppend ); + + iIkePcapTrace = CIkePcapTrace::NewL(KLogFolder); + } + +// --------------------------------------------------------------------------- +// Writes to log. +// --------------------------------------------------------------------------- +// +void CKmdDebugLogger::LogWrite( const TDesC& aText ) + { + const TInt KMaxLineWidth( 100 ); + const TInt textLength( aText.Length() ); + TInt charsLeft( textLength ); + + while ( charsLeft ) + { + if ( charsLeft >= KMaxLineWidth ) + { + // Write next KMaxLineWidth chars. + iFileLogger.Write( aText.Mid( textLength-charsLeft, KMaxLineWidth ) ); + charsLeft -= KMaxLineWidth; + } + else + { + // Write remaining chars (= KMaxLineWidth ) + { + // Write next KMaxLineWidth chars. + iFileLogger.Write( aText.Mid( textLength-charsLeft, KMaxLineWidth ) ); + charsLeft -= KMaxLineWidth; + } + else + { + // Write remaining chars ( aFmt, ... ) + { + VA_LIST list; + VA_START( list, aFmt ); + + iFileLogger.WriteFormat( aFmt, list ); + } + +// --------------------------------------------------------------------------- +// Writes to log. +// --------------------------------------------------------------------------- +// +void CKmdDebugLogger::LogWriteF( TRefByValue aFmt, ... ) + { + VA_LIST list; + VA_START( list,aFmt ); + + iFileLogger.WriteFormat( aFmt, list ); + } + +// --------------------------------------------------------------------------- +// Writes array to log. +// --------------------------------------------------------------------------- +// +void CKmdDebugLogger::LogWriteArray( const TUint8* aArray, TInt aLength ) + { + ASSERT(aArray); + HBufC *buf = HBufC::New( aLength*4+1 ); // max 3 num and a blank (+1 for /n) + if ( !buf ) + { + return; + } + + for ( TInt i=0; iDes().AppendFormat(_L(" ")); + } + buf->Des().AppendFormat( _L("%02.2x"), aArray[i] ); // key Data byte2byte + } + + LogWrite( buf->Des() ); + + delete buf; + buf = NULL; + } + +// --------------------------------------------------------------------------- +// Writes number to log. +// --------------------------------------------------------------------------- +// +void CKmdDebugLogger::LogWriteNum( TUint aNum ) + { + const TInt KMaxNumLength( 20 ); + TBuf buf; + buf.AppendFormat( _L("%u\n"), aNum ); // key Data byte2byte + LogWrite( buf ); + } + +// --------------------------------------------------------------------------- +// Writes message to PCap log. +// --------------------------------------------------------------------------- +// +void CKmdDebugLogger::TraceMessage(const TDesC8& aMessage, + const TInetAddr& aSourceAddress, + const TInetAddr& aDestinationAddress, + CIkePcapTrace::TEncryptionType aEncryptionType) + { + iIkePcapTrace->TraceMessage(aMessage, + aSourceAddress, aDestinationAddress, + aEncryptionType); + } + + +#endif //_DEBUG