testexecfw/stf/stffw/logger/STFLoggingServer/src/StifLoggerBase.cpp
author Johnson Ma <johnson.ma@nokia.com>
Thu, 13 May 2010 17:42:48 +0800
changeset 3 a5f55a5789f3
parent 2 8bb370ba6d1d
permissions -rw-r--r--
Defect Fix: TeamTrack DEF145107

/*
* Copyright (c) 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: This module contains implementation of CStifLoggerBase 
* class member functions.
*
*/

// INCLUDE FILES
#include <e32std.h>
#include "StifLoggerBase.h"
#include "TxtLogger.h"
#include "HtmlLogger.h"
#include "DataLogger.h"
#include "LoggerTracing.h"
#include "LoggerOverFlow.h"

/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: CStifLoggerBase

    Description: Default constructor

    C++ default constructor can NOT contain any code, that
    might leave.

    Parameters: None
    
    Return Values: None

    Errors/Exceptions: None

    Status: Approved

-------------------------------------------------------------------------------
*/
CStifLoggerBase::CStifLoggerBase()
    {

    }

/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: NewL

    Description: Two-phased constructor.

    Parameters: const TDesC& aTestPath: in: Path to logged information
                const TDesC& aTestFile: in: Log name for information
                TLoggerType aLoggerType: in: Log file type(txt, html,
                                             data)
                TOutput aOutput: in: Output source(File)
                TBool aOverWrite: in: Indicator to file overwrite
                TBool aWithTimeStamp: in: Indicator to time stamp
                TBool aWithLineBreak: in: Indicator to line break
                TBool aWithEventRanking: in: Indicator to event ranking
                TBool aThreadIdToLogFile: in: Indicator to thread id adding to
                                              end of the log file
                TBool aCreateLogDir: in: Indicator to directory creation
                TInt  aStaticBufferSize
                TBool aUnicode: in: Indicator if file has to be in unicode format

    Return Values: CStifLoggerBase* logger: pointer to CStifLoggerBase object

    Errors/Exceptions: Leaves if aTestPath or aTestFile length is over KMaxName
                       Leaves if called serv.Connect() method fails
                       Leaves if called CHtmlLogger::NewL method fails
                       Leaves if called CDataLogger::NewL method fails
                       Leaves if called CTxtLogger::NewL method fails

    Status: Proposal

-------------------------------------------------------------------------------
*/
EXPORT_C CStifLoggerBase* CStifLoggerBase::NewL( const TDesC& aTestPath,
                                            const TDesC& aTestFile,
                                            CStifLogger::TLoggerType aLoggerType,
                                            CStifLogger::TOutput aOutput,
                                            TBool aOverWrite,
                                            TBool aWithTimeStamp,
                                            TBool aWithLineBreak,
                                            TBool aWithEventRanking,
                                            TBool aThreadIdToLogFile,
                                            TBool aCreateLogDir,
                                            TInt  aStaticBufferSize,
                                            TBool aUnicode,
                                            TInt aThreadId)
    {
    if( KMaxName < aTestPath.Length() || KMaxName < aTestFile.Length() )
        {
        User::Leave( KErrArgument );
        }



    // Html file logging
    if ( aLoggerType == CStifLogger::EHtml )
        {
        // Create CHtmlLogger object logger
        CHtmlLogger* logger = CHtmlLogger::NewL( aTestPath,
                                                    aTestFile,
                                                    aLoggerType,
                                                    aOutput,
                                                    aOverWrite,
                                                    aWithTimeStamp,
                                                    aWithLineBreak,
                                                    aWithEventRanking,
                                                    aThreadIdToLogFile,
                                                    aCreateLogDir,
                                                    aStaticBufferSize,
                                                    aUnicode,
                                                    aThreadId);
        return (CStifLoggerBase*)logger;
        }
    // Data file
    else if ( aLoggerType == CStifLogger::EData )
        {
        // Create CDataLogger object logger
        CDataLogger* logger = CDataLogger::NewL( aTestPath,
                                                    aTestFile,
                                                    aLoggerType,
                                                    aOutput,
                                                    aOverWrite,
                                                    aWithTimeStamp,
                                                    aWithLineBreak,
                                                    aWithEventRanking,
                                                    aThreadIdToLogFile,
                                                    aCreateLogDir,
                                                    aStaticBufferSize,
                                                    aUnicode,
                                                    aThreadId);
        return (CStifLoggerBase*)logger;
        }
    // For default: text file logging
    else
        {
        // Create CTxtLogger object logger
        CTxtLogger* logger = CTxtLogger::NewL( aTestPath,
                                                aTestFile,
                                                aLoggerType,
                                                aOutput,
                                                aOverWrite,
                                                aWithTimeStamp,
                                                aWithLineBreak,
                                                aWithEventRanking,
                                                aThreadIdToLogFile,
                                                aCreateLogDir,
                                                aStaticBufferSize,
                                                aUnicode,
                                                aThreadId);
        return (CStifLoggerBase*)logger;
        }

    }

/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: ~CStifLoggerBase

    Description: Destructor

    Parameters: None

    Return Values: None

    Errors/Exceptions: None

    Status: Approved

-------------------------------------------------------------------------------
*/
CStifLoggerBase::~CStifLoggerBase()
    {

    if(iOutput)
        {
        delete iOutput;
        iOutput = 0;
        }
    
    }


/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: Log

    Description: Log a 16 bit information.

    There is also parameter to styling text information e.g. text color.

    Parameters: TInt aStyle: in: Logged text forming parameter
                const TDesC aLogInfo: in: 16 bit data to be logged

    Return Values: TInt: Symbian error code.

    Errors/Exceptions:  None

    Status: Approved

-------------------------------------------------------------------------------
*/
EXPORT_C TInt CStifLoggerBase::Log( TInt aStyle, const TDesC& aLogInfo )
    {
    return Send( aStyle, aLogInfo );

    }

/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: Log

    Description: Log a 8 bit information.

    There is also parameter to styling text information e.g. text color.

    Parameters: TInt aStyle: in: Logged text forming parameter
                const TDesC8 aLogInfo: in: 8 bit data to be logged

    Return Values: TInt: Symbian error code.

    Errors/Exceptions:  None

    Status: Approved

-------------------------------------------------------------------------------
*/
EXPORT_C TInt CStifLoggerBase::Log( TInt aStyle, const TDesC8& aLogInfo )
    {
    return Send( aStyle, aLogInfo );

    }

/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: CreationResult

    Description: Return StifLoggerBase creation result.

    Parameters: None
    
    Return Values: StifLoggerBase creation result

    Errors/Exceptions:  None

    Status: Approved

-------------------------------------------------------------------------------
*/
EXPORT_C TInt CStifLoggerBase::CreationResult()
    {
     
    CStifLogger::TOutput outputType;
    return iOutput->OutputCreationResult( outputType );
    
    }
    
/*
-------------------------------------------------------------------------------

    Class: CStifLoggerBase

    Method: OutputType

    Description: Get output type. Valid only if CreationResult returns KErrNone.

    Parameters: TOutput& aOutput
    
    Return Values: StifLoggerBase creation result

    Errors/Exceptions:  None

    Status: Approved

-------------------------------------------------------------------------------
*/
EXPORT_C CStifLogger::TOutput CStifLoggerBase::OutputType()
    {
    
    CStifLogger::TOutput outputType;
    iOutput->OutputCreationResult( outputType );
    return outputType;
    
    }

// End of File