diff -r 000000000000 -r ba25891c3a9e ncdengine/inc/ncdserverreportmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ncdengine/inc/ncdserverreportmanager.h Thu Dec 17 08:51:10 2009 +0200 @@ -0,0 +1,190 @@ +/* +* Copyright (c) 2006 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: Contains MNcdNode interface +* +*/ + + +#ifndef M_NCD_SERVER_REPORT_MANAGER_H +#define M_NCD_SERVER_REPORT_MANAGER_H + + +#include "catalogsbase.h" +#include "ncdinterfaceids.h" + +class MNcdServerReportOperation; +class MNcdServerReportOperationObserver; + + +/** + * MNcdServerReportManager interface provides functions + * that can be used to manage server report sending to the server. + * As a default, report sending is handled automatically in the background. + * But, manager can be used if reports should be collected and sent in certain + * moments. This interface can be gotten from the MNcdProvider by using the + * QueryInterfaceL function. + * + * @note Capabilities define what kind of reports are supported by the + * application. So, if reports should or should not be sent, then define + * this by setting correct capabilities. + * + * @see MNcdServerReportOperation + * @see MNcdServerReportOperationObserver + * @see MNcdProvider + * @see NcdCapabilities + * + * + */ +class MNcdServerReportManager : public virtual MCatalogsBase + { + +public: + + /** + * Unique identifier for the interface, required for all MCatalogsBase interfaces. + * + * + */ + enum { KInterfaceUid = ENcdServerReportManagerUid }; + + + /** + * Reporting method describes how the reporting is done. + */ + enum TReportingMethod + { + + /** + * Reporting is done in the background + * This is a default method. + */ + EReportingBackground, + + /** + * Reporting is managed through this API Interface. + * The API user decides when to send reports instead of allowing + * reports to be sent in the background when process time allows. + */ + EReportingManaged + + }; + + + enum TReportingStyle + { + + /** + * Reporting information is sent in the general format not in some platform + * specific format. This is a default value. + */ + EReportingStyleGeneral, + + /** + * Reports will contain S60 specific information. + */ + EReportingStyleS60 + + }; + + + /** + * Setter for the reporting method. + * + * @param aMethod The reporting method that is used when reports are + * managed. + * + * @exception Leave System wide error code + * + * + */ + virtual void SetReportingMethodL( const TReportingMethod& aMethod ) = 0; + + + /** + * Getter for the reporting method. + * + * @param TReportingMethod The reporting method that is used + * when reports are managed. + * + * + */ + virtual TReportingMethod ReportingMethodL() const = 0; + + + /** + * Setter for the reporting style. + * + * @param aStyle The style that is used for reports. + * + * @exception Leave System wide error code + * + * + */ + virtual void SetReportingStyleL( const TReportingStyle& aStyle ) = 0; + + + /** + * Getter for the reporting style. + * + * @param TReportingMethod The style that is used for reports. + * + * + */ + virtual TReportingStyle ReportingStyleL() const = 0; + + + /** + * Starts the server report sending operation. + * + * @note The reference count of the operation object is increased by one. So, Release() + * function of the operation should be called when operation is not needed anymore. + * + * @note The sending process is asynchronous. When sending has completed, + * the observer callback functions are called. + * + * @note After sending is finished the collected reports will be automatically + * removed. + * + * @note This function has an effect only if the reporting method is set to + * EReportingManaged. If reporting is done in the background, then reports + * are sent automatically, and NULL is returned for the operation. + * + * @param aObserver Operation observer. + * @return MNcdServerReportOperation* Operation if one was created. If reporting is done + * in the background, then NULL is returned. + * @exception Leave System wide error code + * + * + */ + virtual MNcdServerReportOperation* SendL( MNcdServerReportOperationObserver& aObserver ) = 0; + + +protected: + + /** + * The destructor of an interface is set virtual to make sure that + * the destructors of derived classes are called appropriately when the + * object is destroyed. + * + * Destructor is defined as protected to prevent direct use of delete + * on observer interface pointers. + * + * + */ + virtual ~MNcdServerReportManager() {} + + }; + +#endif // M_NCD_SERVER_REPORT_MANAGER_H +