diff -r 000000000000 -r c8caa15ef882 pressrv_plat/xdm_api/inc/XdmEngine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pressrv_plat/xdm_api/inc/XdmEngine.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,275 @@ +/* +* Copyright (c) 2005 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: XDM Engine +* +*/ + + + + +#ifndef __XDMENGINE__ +#define __XDMENGINE__ + +// INCLUDES +#include "e32base.h" +#include "XdmDocument.h" +#include "XdmDirectory.h" + +enum TXdmEnginePanic + { + EDocNodeNull = 0, + ENodeNotEmpty, + EDDocModelNotFound, + EDirModelNotFound, + EIllegalPosition, + EIndexOutOfBounds, + }; + +//CONSTANTS +_LIT( KXdmEngLogFile, "XdmEngine" ); +_LIT8( KGeneralEqualsAndQuotes, "=\"" ); +_LIT8( KGeneralQuotes, "\"" ); +_LIT8( KGeneralSpace, " "); +const TInt KXdmEngLogBufferMaxSize = 2000; +const TInt KXdmEngShutdownDelay = 10; + +//FORWARD DECLARATIONS +class CDesC16Array; +class CXdmProtocol; +class CXdmDocument; +class CXdmDirectory; +class CXdmLogWriter; +class CXdmProtocolInfo; + +// CLASS DECLARATION +class CXdmEngine : public CActive + { + public: // Constructors and destructor + + /** + * Create an instance of the Engine object + * @param CXdmProtocolInfo& Reference to a protocol info object + * @return CXdmEngine* + */ + IMPORT_C static CXdmEngine* NewL( const CXdmProtocolInfo& aProtocolInfo ); + + /** + * Fetch the IDs of the XDM Settings which have been + * configured to this device. + * + * @param RArray On return, contains the TInt type IDs + * which correspond to the names stored + * in the returning array object. + * @return CDesC16Array* The names of the settings + */ + IMPORT_C static CDesC16Array* XdmSettingsLC( RArray& aSettingIds ); + + /** + * Create a new document model + * + * @param TDesC8& Name of the document, including path + * @param TDesC8& Application usage - an AUID + * + * NOTE! It is important to keep in mind that the Xdm Engine + * DOES NOT maintain the documents created on this engine + * object. It is the responsibility of the client application + * to deallocate the documents it creates by calling + * CXdmEngine::DeleteDocumentModelL( model ). The engine + * does keep track of the documents that are constructed + * on it, but it does not own them in the sense which would + * suggest deallocation of the memory reserved for them. + * + * @return CXdmDocument instance + */ + IMPORT_C CXdmDocument* CreateDocumentModelL( const TDesC& aDocumentName, + const TXdmDocType aDocumentType ); + + /** + * Create a new document model + * + * @param CXdmDocument* The document model to delete + * @return void + */ + IMPORT_C void DeleteDocumentModelL( const CXdmDocument* aDocument ); + + /** + * Create a new document model + * + * @param CXdmDocument* The document model to delete + * @return void + */ + IMPORT_C CXdmDirectory* CreateDirectoryModelL( const TDesC& aDirectoryPath ); + + /** + * Create a new document model + * + * @param CXdmDocument* The document model to delete + * @return void + */ + IMPORT_C void DeleteDirectoryModelL( const CXdmDirectory* aDocument ); + + /** + * Create a new element. + * + * The returning CXdmDocumentNode object does not yet + * belong to any document. Therefore it is the responsibility + * of the client application to deallocate the memory + * reserved for the element. + * + * The new element can be "attached" to a document by using + * AppendToModelL() or ReplaceInModelL(). It is important to + * note that even after calling either of these methods, the + * ownership of the object does not change. + * + * @return CXdmDocumentNode* + */ + IMPORT_C CXdmDocumentNode* CreateDocumentNodeL(); + + /** + * Update the changes to the specified document model + * + * @param The document to be updated + * @param TRequestStatus Request status of the caller + * @return void + */ + IMPORT_C void UpdateL( CXdmDocument* aDocument, + TRequestStatus& aStatus ); + + /** + * Update the contents of the specified directory model + * + * @param The directory to be updated + * @param TRequestStatus Request status of the caller + * @return void + */ + IMPORT_C void UpdateL( TRequestStatus& aStatus, + CXdmDirectory* aDirectory, + TDirUpdatePhase aUpdatePhase ); + + + /** + * Cancel an update operation on a document + * + * @param CXdmDocument The document whose update + * is being cancelled + * @return void + */ + IMPORT_C void CancelUpdate( CXdmDocument* aDocument ); + + /** + * Cancel an update operation on a directory + * + * @param CXdmDirectory The directory whose update + * is being cancelled + * @return void + */ + IMPORT_C void CancelUpdate( CXdmDirectory* aDirectory ); + + /** + * Get the list of documents created on this instance + * + * @return RPointerArray The list of document models + */ + IMPORT_C const RPointerArray& DocumentCollection() const; + + /** + * Get the list of directories created on this instance + * + * @return RPointerArray The list of document models + */ + IMPORT_C const RPointerArray& DirectoryCollection() const; + + /** + * Destructor. + */ + IMPORT_C virtual ~CXdmEngine(); + + public: //New functions + + /** + * Return the protocol this engine uses + * + * @return CXdmProtocol* The protocol instance + */ + CXdmProtocol* XdmProtocol() const; + + /** + * Logging function + * + * @param TRefByValue aFmt,... + * @return void + */ + void WriteToLog( TRefByValue aFmt,... ) const; + + public: //Static + + /** + * Convert data from UNICODE to UTF-8 + * + * @param TDesC& UNICODE descriptor + * @return HBufC8* Data converted to UTF-8 + */ + static HBufC8* ConvertToUTF8L( const TDesC& aUnicodeDesc ); + + private: + + /** + * C++ default constructor is private + * @return void + */ + CXdmEngine(); + + /** + * Symbian OS second-phase constructor + * @param CXdmProtocolInfo& Protocol information + * @return void + */ + void ConstructL( CXdmProtocolInfo& aProtocolInfo ); + + /** + * From CActive. + * @return void + */ + void RunL(); + + /** + * From CActive. + * @return void + */ + void DoCancel(); + + private: //Data + + enum TXdmEngineState + { + EXdmEngineIdle = 0, + EXdmEngineStartDocUpdate, + EXdmEngineStartDirUpdate + }; + + CXdmProtocol* iXdmProtocol; + CXdmDocument* iCurrentDoc; + CXdmDirectory* iCurrentDir; + TRequestStatus* iClientStatus; + RPointerArray iDocumentQueue; + RPointerArray iDocUpdateQueue; + RPointerArray iDirUpdateQueue; + RPointerArray iDirectoryQueue; + CXdmLogWriter* iLogWriter; + }; + +#endif + + +// End of File