diff -r 000000000000 -r c8caa15ef882 xdmprotocols/XcapProtocol/inc/XcapProtocol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xdmprotocols/XcapProtocol/inc/XcapProtocol.h Tue Feb 02 01:05:17 2010 +0200 @@ -0,0 +1,337 @@ +/* +* 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: CXcapProtocol +* +*/ + + + + +#ifndef __XCAPPROTOCOL__ +#define __XCAPPROTOCOL__ + +#include +#include +#include +#include "XcapCache.h" +#include "XdmProtocol.h" +#include "XdmShutdownSwitch.h" +#include "XcapUtilsInterface.h" + +enum TXcapAuthType + { + EXcapAuthGaa = 0, + EXcapAuthEarlyIms, + EXcapAuthHttpDigest + }; + +//CONSTANTS +_LIT( KHttp, "http://" ); +_LIT( KHttps, "https://" ); +_LIT( KHostSeparator, "/" ); +_LIT( KXcapEngLogDir, "XDM" ); +_LIT( KXcapEngLogFile, "XcapProtocol" ); +const TInt KXcapEngLogBufferMaxSize = 2000; + +//FORWARD DECLARATIONS +class CXdmLogWriter; +class CXcapDocument; +class CXdmXmlParser; +class CXcapEarlyIms; +class MMsgConnManager; +class CXdmShutdownTimer; +class CXcapHttpTransport; +class CXdmOperationFactory; +class CXdmSettingsCollection; + +//CLASS DECLARATION +class CXcapProtocol : public CXdmProtocol, + public MXcapEarlyImsObs, + public MXdmShutdownSwitch, + public MMsgBearerObsCallback + { + + public: + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + IMPORT_C TPtrC8 PublicID(); + + /** + * Return a pointer to the cache client interface + * @return RXcapCache* Pointer to the cache interface + */ + IMPORT_C RXcapCache* Cache(); + + /** + * Return a reference to the XML Parser + * @return CXdmXmlParser& Reference to XML Parser + */ + IMPORT_C CXdmXmlParser& Parser(); + + /** + * Return a reference to the XML Parser + * @return CXdmXmlParser& Reference to XML Parser + */ + IMPORT_C CXcapHttpTransport& Transport(); + + /** + * Check whether network is available + * @return TBool Is network available + */ + IMPORT_C TBool IsNetworkAvailable(); + + public: //Not exported + + /** + * Check whether there are requests being carried out + * and start the idle timer if appropriate + * + * @return void + */ + void CheckActivity(); + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + TPtrC8 UserName() const; + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + TXcapAuthType AuthType() const; + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + TBool IsSimRequestPending( TInt& aError ) const; + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + void AppendNotifyeeL( CXcapDocument* aPendingDoc ); + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + void CancelImsResolver(); + + /** + * Logging function + * @param TRefByValue aFmt,... + * @return void + */ + void WriteToLog( TRefByValue aFmt,... ) const; + + private: //From CXdmProtocol + + /** + * Initialise the media used to transfer Xdm data + */ + void InitTransferMedium( TInt aIdleTimeout, TRequestStatus& aStatus ); + + /** + * Cancel initialisation of the transfer media. + */ + void CancelTransferMediumInit(); + + /** + * Cancel initialisation of the transfer media. + */ + TBool IsTransferAvailable() const; + + /** + * Create a new document node. + */ + CXdmDocumentNode* CreateDocumentNodeL(); + + /** + * Create a new protocol dependent document model + */ + CXdmDocument* CreateDocumentL( const TDesC& aDocumentName, + const TXdmDocType aDocumentType ); + + /** + * Create a new protocol dependent document model + */ + CXdmDirectory* CreateDirectoryL( const TDesC& aDirectoryPath ); + + /** + * Destructor. + */ + virtual ~CXcapProtocol(); + + private: + + /** + * From MXdmShutdownSwitch + * @return void + */ + void SwitchOff(); + + /** + * From MXcapEarlyImsObs. + * @param TInt Error + * @return void + */ + void RequestComplete( TInt aError ); + + public: //Static + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + static CXcapProtocol* NewL( const TXdmProtocolParams& aProtocolInfo ); + + /** + * A Global logging function + * @param TRefByValue aFmt,... + * @return void + */ + static TInt GenerateUniqueIdL(); + + private: //Methods + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + CXcapProtocol(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void ConstructL( const TXdmProtocolParams& aProtocolParams ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + void DeleteLogFileL(); + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + TInt SaveSettingsL(); + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + void SaveFromCollectionL( const CXdmSettingsCollection& aSettings ); + + /** + * Return an operation object that knows how to manipulate + * partial document + */ + void ResolveIdentityL(); + + /** + * Select the type of the authentication + */ + void SelectAuthTypeL( const CXdmSettingsCollection& aSettings ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + RXcapCache* CacheHandle(); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + TPtrC8 Impu() const; + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + HBufC* ParseRootLocationLC( const TBool aSecurity, + const TDesC& aRootLocation ); + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + HBufC* CheckProtocolPrefixL( const TDesC& aRootLocation ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + HBufC* ConstructSecureUriL( const TDesC& aBasicUri ); + + /** + * Symbian OS default constructor. + * @param TInt Default Access Point ID + * @return CXdmDocOperation* + */ + HBufC* ConstructStandardUriL( const TDesC& aBasicUri ); + + /** + * Handle a bearer event + * @param TMsgBearerEvent The type of the event + */ + void HandleBearerEventL( TBool aAuthoritativeClose, + TMsgBearerEvent aBearerEvent ); + + private: //Data + + TInt iIdleTimeout; + TInt iAccessPoint; + TInt iImsResolverError; + TBool iSuspend; + TBool iCacheUsage; + TBool iTransferMediaOpen; + TBool iSimRequestPending; + HBufC* iRootUri; + HBufC8* iPublicId; + RXcapCache iCacheClient; + CXdmEngine* iXdmEngine; + CXdmDocument* iCapabilities; + CXdmLogWriter* iLogWriter; + TXcapAuthType iAuthType; + CXdmXmlParser* iXmlParser; + CXcapEarlyIms* iImsResolver; + TXdmCredentials iCredentials; + MMsgConnManager* iConnectionManager; + CXdmShutdownTimer* iIdleTimer; + CXcapHttpTransport* iHttpTransport; + const CXdmProtocolInfo* iProtocolInfo; + TBuf8 iUserName; + RPointerArray iNotifyeeQueue; + }; + +#endif //__XCAPPROTOCOL__ + +// End of File