diff -r b183ec05bd8c -r 19bba8228ff0 remotemgmt_plat/diagnostics_results_api/inc/diagresultsdatabaseitem.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotemgmt_plat/diagnostics_results_api/inc/diagresultsdatabaseitem.h Wed Sep 01 12:27:42 2010 +0100 @@ -0,0 +1,241 @@ +/* +* Copyright (c) 2007-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: Results database item +* +*/ + + +#ifndef DIAGRESULTSDATABASEITEM_H +#define DIAGRESULTSDATABASEITEM_H + +// INCLUDES +#include // CBase + +// FORWARD DECLARATIONS +class RWriteStream; +class RReadStream; +class TTime; +class TStreamId; +class CStreamStore; +class CBufFlat; + +/** +* Results database item. +* +* @since S60 v5.0 +**/ +class CDiagResultsDatabaseItem : public CBase + { +public: + /** + * Result of test. + */ + enum TResult + { + ESuccess = 0, + EFailed, // Test failed + ESkipped, // Test was never executed because it was skipped + // before it is started. (e.g. during initial delay timer) + ECancelled, // Test session was cancelled. ( ECancelAll ) + EInterrupted, // Interrupted. Test was already running, but interrupted + // by end user, or other external cause. + ENotPerformed, // Not performed due to invalid set up. + EDependencyFailed, // Failed because dependent test failed. + EWatchdogCancel, // Watchdog cancelled testing. + ESuspended, // Test is scheduled to run later. + EQueuedToRun, // Test is waiting for execution. It is possible that + // EQueuedToRun is never overwritten. + EDependencySkipped // Skipped because common dependency was not executed + // either due to it was skipped or interrupted. + }; + +public: + + /** + * NewL. Construct from a stream. + * @param aStream Stream to read from. + */ + IMPORT_C static CDiagResultsDatabaseItem* NewL ( RReadStream& aStream ); + + /** + * NewL. + */ + IMPORT_C static CDiagResultsDatabaseItem* NewL ( + TUid aTestUid, + TBool aDependencyExecution, + TResult aResult, + TTime aStartTime, + TTime aEndTime, + CBufFlat* aDetailsData ); + /** + * NewLC. + */ + IMPORT_C static CDiagResultsDatabaseItem* NewLC ( + TUid aTestUid, + TBool aDependencyExecution, + TResult aResult, + TTime aStartTime, + TTime aEndTime, + CBufFlat* aDetailsData ); + + /** + * NewL. Copy constructor. This will do a deep copy. + * + * @param aOriginal - Original to copy data from. + * @return a new instance of CDiagResultsDatabaseItem that is a deep + * copy of the original given. Ownership is transferred. + */ + IMPORT_C static CDiagResultsDatabaseItem* NewL ( + const CDiagResultsDatabaseItem& aOriginal ); + /** + * Destructor. + */ + IMPORT_C virtual ~CDiagResultsDatabaseItem(); + + /** + * Get Uid of test plug-in. + * + * @return TUid - uid of the test plug-in. + */ + IMPORT_C TUid TestUid() const; + + /** + * Whether the test was executed to satisfy dependency or not. + * + * @return ETrue if executed as dependency. + * EFalse otherwise. + */ + IMPORT_C TBool WasDependency() const; + + /** + * Get Test Result. + * + * @return TResult. + */ + IMPORT_C TResult TestResult() const; + + /** + * Time that test execution was started. + * Universal time is used. + * + * @return Time that execution was started. + */ + IMPORT_C TTime TimeStarted() const; + + /** + * Time that test execution was completed. + * Universal time is used. + * + * @return Time that execution was completed. + */ + IMPORT_C TTime TimeCompleted() const; + + /** + * Details data. This must be interpreted by the plug-ins before + * it can be used. Data is in object form. + */ + IMPORT_C const CBufFlat* DetailsData() const; + + /** + * Calculate stream size in bytes. Size can be used to evaluate needed + * stream size. + * + * @return Size in bytes. + */ + IMPORT_C TInt Size() const; + +public: + + /** + * Externalize the test result to a stream. + * + * @param aStream Stream to write to. + */ + IMPORT_C void ExternalizeL( RWriteStream& aStream ) const; + + +private: //internalization methods + + /** + * Internalize the test result from a stream. + * + * @param aStream Stream to read from. + */ + IMPORT_C void InternalizeL( RReadStream& aStream ); + + /** + * Write TTime into write stream. + * + * @param aStream Stream to write to. + * @param aTime TTime that is written into the stream. + **/ + void WriteTimeToStreamL( RWriteStream& aStream, const TTime& aTime ) const; + + /** + * Read TTime from read stream. + * + * @param aStream read stream. + * @param aTime Contains time after stream is read. + **/ + void ReadTimeFromStreamL( RReadStream& aStream, TTime& aTime ); + +private: + + /** + * C++ Constructors. + */ + CDiagResultsDatabaseItem ( + TUid aTestUid, + TBool aDependencyExecution, + TResult aResult, + TTime aStartTime, + TTime aEndTime, + CBufFlat* aDetailsData ); + + /** + * Construct from a stream. + * + * @param aStream Read stream. + */ + void ConstructL ( RReadStream& aStream ); + + /** + * Default C++ constructor. + **/ + CDiagResultsDatabaseItem (); + +private: // data + + // Uid of the test plug-in. + TUid iTestUid; + + // Has this been executed as a part of another execution (precondition). + TBool iDependencyExecution; + + // Test result + TResult iResult; + + // When the test began. + TTime iStartTime; + + // When the test ended + TTime iEndTime; + + // Contains flat buffer that can hold additional data + // For example debugging data or further analysis. + CBufFlat* iDetailsData; + + }; + +#endif // DIAGRESULTSDATABASEITEM_H