diff -r 2669f8761a99 -r fbd2e7cec7ef xdmprotocols/XcapProtocol/inc/XcapDocument.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xdmprotocols/XcapProtocol/inc/XcapDocument.h Wed Sep 01 12:23:14 2010 +0100 @@ -0,0 +1,440 @@ +/* +* 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: CXcapDocument +* +*/ + + + + +#ifndef __XCAPDOCUMENT__ +#define __XCAPDOCUMENT__ + +#include +#include + +//CONSTANTS +const TUint KETagBufferMaxLength = 64; +_LIT8( KSlash, "/" ); +_LIT8( KUserDirName, "users/" ); +_LIT8( KGlobalDirName, "global/" ); +_LIT8( KXcapGlobalDocName, "index" ); + +//FORWARD DECLARATIONS +class RXcapCache; +class CXdmEngine; +class CXdmNamespace; +class CXcapProtocol; +class CXcapAppUsage; +class MXdmOperation; +class CXcapDocumentNode; +class CXdmOperationFactory; + +//CLASS DECLARATION +class CXcapDocument : public CXdmDocument + { + public: + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static CXcapDocument* NewL( TXdmDocType aDocumentType, + const TDesC& aDocumentName, + const CXdmEngine& aXdmEngine, + const CXcapProtocol& aXcapProtocol ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static CXcapDocument* NewL( TXdmDocType aDocumentType, + const TDesC8& aDocumentName, + const CXdmEngine& aXdmEngine, + const CXcapProtocol& aXcapProtocol ); + + /** + * Set one option + * @return void + * @param The completed update operation + */ + void SetOption( TInt aOption ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + TXdmDocType DocumentType() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void NotifyResolverCompleteL( TInt aError ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void StartInternalL( TRequestStatus& aStatus ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void CancelUpdate(); + + /** + * Destructor. + */ + virtual ~CXcapDocument(); + + public: //Exported methods + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C TDesC8& ETag(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C void SetETag( const TDesC8& aETagDesc ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C TInt DataLength() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C CXcapAppUsage& ApplicationUsage() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C CXcapDocument* TempCopyL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C void RemoveData( CXcapDocumentNode* aDocumentNode ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + IMPORT_C CXcapProtocol& Protocol() const; + + /** + * Reset the document subset + */ + IMPORT_C virtual void ResetSubset(); + + private: //From CXdmDocument + + /** + * Construct an "anonymous" entry point for this document. + * This node effectively becomes the root of this document. + * + */ + CXdmDocumentNode* CreateRootL(); + + /** + * Return the time stamp for this document + * + * @return TTime + */ + TTime TimeStamp() const; + + /** + * Return an error document for a failed update + * + * NOTE: The returning object will be NULL in case + * the used protocol does not support this feature. + * + * @return CXdmDocument* The error document + */ + CXdmDocumentNode* ErrorRoot(); + + /* + * Reset the contents of this document model. + */ + void ResetContents(); + + public: //From CXdmDocument + + /** + * Return the root element of this document + * + * @return CXdmDocumentNode The root element of the document + * + * NOTE: The returning node may or may not contain any data, + * since, in the case that this document model does not + * have content yet, the element is a simple "entry point" + * to the whole document. Thus, for instance, if the client + * application requests the Xdm Engine to fetch a particular + * document, the root element points to nothing until the + * request has been completed. + * + */ + CXdmDocumentNode* DocumentRoot() const; + + private: //From MXdmNamespaceContainer + + /** + * Return the number of namespace declarations + * @return TInt Namespace declaration count + */ + TInt Count() const; + + /** + * Copies the request data + * @param aRequestData Data to be sent + */ + void AppendNamespaceL( const TDesC8& aUri, const TDesC8& aPrefix ); + + /** + * Remove a namespace from the document + * @param TDesC8& URI of the namespace + * @param TDesC8& Prefix of the namespace + */ + void RemoveNamespace( const TDesC8& aUri ); + + /** + * Copies the request data + * @param aRequestData Data to be sent + */ + TPtrC8 Uri( const TDesC8& aPrefix ) const; + + /** + * Fetch the aIndex-th URI + * @param TInt The index of the desired URI string + * @return TPtrC URI string + */ + TPtrC8 Uri( TInt aIndex ) const; + + /** + * Fetch the aIndex-th prefix + * @param TDesC8 The index of the desired prefix string + * @return TPtrC Prefix string + */ + TPtrC8 Prefix( TInt aIndex ) const; + + /** + * Resets namespaces from the document + * + * @return void + */ + void ResetNamespaces(); + + private: + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + CXcapDocument( TXdmDocType aDocumentType, + const CXdmEngine& aXdmEngine, + const CXcapProtocol& aXcapProtocol ); + + /** + * From CActive. + * @return void + */ + void RunL(); + + /** + * From CActive. + * @return void + */ + void DoCancel(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void InstallAppUsageL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void UpdateDocumentInfoL( RXcapCache* aCacheClient ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void StartUpdateL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void SaveClientStatus( TRequestStatus& aClientStatus ); + + /** + * Handle a failed update operation + * @return void + * @param CXdmDocOperation* The failed operation + */ + void HandleErrorL(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void HandleRequestCompletionL(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void ResolveAsyncConflictL(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void CreateTempCopyL(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void ActivateOperationL(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void CheckOperationQueueL(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void DequeueOperation( MXdmOperation* aOperation ); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + void DequeueAll(); + + /** + * Append an element to the path identifying the + * the current document subset + * @return void + */ + void AppendPathPartL( const TDesC& aString ); + + /** + * Return the current document subset (including descendants) + * @return void + */ + CXdmDocumentNode* CurrentExtent() const; + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + HBufC8* EightBitNameLC(); + + /** + * Handle a successful update operation + * @return void + * @param The completed update operation + */ + TBool IsGlobalTree( const TDesC8& aAuid ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void ConstructL(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void ConstructL( const TDesC8& aDocumentName ); + + private: //Data + + enum TXcapDocumentState + { + EXdmDocIdle = 0, + EXdmDocUpdating, + EResolvingAsyncConflict, + ERetryingFailedOperation + }; + + TInt iDataLength; + TInt iUpdateIndex; + TInt iOperationCount; + TUint iOptions; + TTime iLastAccess; + TTime iLastModification; + HBufC8* iEightBitName; + TXdmDocType iDocumentType; + CXcapDocument* iTempCopy; + CXcapAppUsage* iAppUsage; + CXcapDocumentNode* iDocumentRoot; + CXdmDocumentNode* iErrorRoot; + TXcapDocumentState iDocumentState; + CXcapProtocol& iXcapProtocol; + TBuf8 iETagBuffer; + RPointerArray iNamespaces; + }; + +#endif //__XCAPDOCUMENT__ + +// End of File