xdmprotocols/XcapProtocol/XcapOperations/inc/XcapHttpOperation.h
branchRCL_3
changeset 17 2669f8761a99
parent 16 2580314736af
child 18 fbd2e7cec7ef
equal deleted inserted replaced
16:2580314736af 17:2669f8761a99
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   CXcapHttpOperation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 #ifndef __XCAPHTTPOPERATION__
       
    22 #define __XCAPHTTPOPERATION__
       
    23 
       
    24 #include <e32base.h>
       
    25 #include "XdmOperation.h"
       
    26 #include "XcapOperationFactory.h"
       
    27 #include "XcapHttpRequestTimerCallback.h"
       
    28 
       
    29 //The default timout for HTTP requests in seconds
       
    30 const TInt KDefaultHttpRequestTimeout           = 30;
       
    31 
       
    32 //Set, if document should be fetched from cache when processing a doc subset
       
    33 const TInt KFetchMasterFromCache                             = KXdmOption1;
       
    34 
       
    35 //Set, if rules concerning document subsets should be applied when processing responses
       
    36 const TInt KDocumentSubset                                   = KXdmOption2;
       
    37 
       
    38 //Set, if the document an operation targets should not be cached (a directory document, for example)
       
    39 const TInt KNoCache                                          = KXdmOption3;
       
    40 
       
    41 //Set, if EARLY-IMS is in use => add the public ID in X-3GPP-Intended-Identity header
       
    42 const TInt KUseIntendedIdentity                              = KXdmOption4;
       
    43 
       
    44 //FORWARD DECLARATION
       
    45 class RXcapCache;
       
    46 class CXdmDocument;
       
    47 class CXcapDocument;
       
    48 class CXdmXmlParser;
       
    49 class CXcapUriParser;
       
    50 class CXcapHttpRequest;
       
    51 class CXdmDocumentNode;
       
    52 class CXcapDocumentNode;
       
    53 class CXcapHttpTransport;
       
    54 
       
    55 //Override application usage validation
       
    56 //Must ONLY be used for testing, comment out before release
       
    57 //#define                           __OVERRIDE_VALIDATION__
       
    58 
       
    59 //CLASS DECLARATION
       
    60 NONSHARABLE_CLASS( CXcapHttpOperation ) : public CActive,
       
    61                                           public MXdmOperation
       
    62                            
       
    63     {
       
    64     public:
       
    65         
       
    66         /**
       
    67         * Symbian OS default constructor.
       
    68         * @param TInt Default Access Point ID
       
    69         * @return CXdmDocOperation*
       
    70         */     
       
    71         static void EscapeLC( CXdmDocumentNode& aRootNode );
       
    72         
       
    73         /**
       
    74         * Symbian OS default constructor.
       
    75         * @param TInt Default Access Point ID
       
    76         * @return CXdmDocOperation*
       
    77         */     
       
    78         static HBufC8* EscapeLC( const TDesC8& aDescriptor );
       
    79         
       
    80         /**
       
    81         * Symbian OS default constructor.
       
    82         * @param TInt Default Access Point ID
       
    83         * @return CXdmDocOperation*
       
    84         */     
       
    85         static HBufC8* Escape2LC( const TDesC& aDescriptor );
       
    86         
       
    87     public:
       
    88         
       
    89         /**
       
    90         * Destructor.
       
    91         */      
       
    92         void ExecuteL( TRequestStatus& aStatus, TUint aOptions );
       
    93 
       
    94         /**
       
    95         * Destructor.
       
    96         */      
       
    97         TInt Result() const;
       
    98         
       
    99         /**
       
   100         * Destructor.
       
   101         */      
       
   102         const TXdmCompletionData& CompletionData() const;
       
   103         
       
   104         /**
       
   105         * Destructor.
       
   106         */    
       
   107         TBool IsCompleted() const;
       
   108         
       
   109         /**
       
   110         * Set this operation to completed state.
       
   111         */      
       
   112         void Destroy();
       
   113         
       
   114         /**
       
   115         * Set this operation to completed state.
       
   116         */      
       
   117         virtual CXdmDocumentNode* TargetNode() const;
       
   118         
       
   119         /**
       
   120         * Destructor.
       
   121         */    
       
   122         CXcapHttpRequest* HttpRequest() const;
       
   123 
       
   124         /**
       
   125         * Destructor.
       
   126         */      
       
   127         virtual ~CXcapHttpOperation();
       
   128 
       
   129     protected:  //Methods
       
   130 
       
   131         /**
       
   132         * Symbian OS default constructor.
       
   133         * @param TInt Default Access Point ID
       
   134         * @return CXdmDocOperation*
       
   135         */     
       
   136         CXcapHttpOperation( const CXdmDocument& aTargetDoc,
       
   137                             CXcapDocumentNode* aDocumentSubset,
       
   138                             CXcapOperationFactory& aOperationFactory );
       
   139         
       
   140         /**
       
   141         * Symbian OS default constructor.
       
   142         * @param TInt Default Access Point ID
       
   143         * @return CXdmDocOperation*
       
   144         */     
       
   145         void BaseConstructL();
       
   146         
       
   147         /**
       
   148         * Symbian OS default constructor.
       
   149         * @param TInt Default Access Point ID
       
   150         * @return CXdmDocOperation*
       
   151         */     
       
   152         TPtrC8 Descriptor( HBufC8* aBuffer );
       
   153         
       
   154         /**
       
   155         * Symbian OS default constructor.
       
   156         * @param TInt Default Access Point ID
       
   157         * @return CXdmDocOperation*
       
   158         */     
       
   159         TInt ReinterpretStatus( const TInt aHttpStatus ) const;
       
   160         
       
   161         /**
       
   162         * Symbian OS default constructor.
       
   163         * @param TInt Default Access Point ID
       
   164         * @return CXdmDocOperation*
       
   165         */ 
       
   166         CXcapHttpTransport& Transport() const;
       
   167         
       
   168         /**
       
   169         * Symbian OS default constructor.
       
   170         * @param TInt Default Access Point ID
       
   171         * @return CXdmDocOperation*
       
   172         */     
       
   173         virtual void OperationCompleteL() = 0;
       
   174         
       
   175         /**
       
   176         * Symbian OS default constructor.
       
   177         * @param TInt Default Access Point ID
       
   178         * @return CXdmDocOperation*
       
   179         */     
       
   180         virtual void OperationFailedL() = 0;
       
   181         
       
   182         /**
       
   183         * Symbian OS default constructor.
       
   184         * @param TInt Default Access Point ID
       
   185         * @return CXdmDocOperation*
       
   186         */     
       
   187         virtual void ExecuteL() = 0;
       
   188         
       
   189         /**
       
   190         * Symbian OS default constructor.
       
   191         * @param TInt Default Access Point ID
       
   192         * @return CXdmDocOperation*
       
   193         */     
       
   194         virtual void ExecuteL( CXcapHttpRequest* aHttpRequest,
       
   195                                CXdmDocumentNode* aDocumentNode );
       
   196         
       
   197         /**
       
   198         * Symbian OS default constructor.
       
   199         * @param TInt Default Access Point ID
       
   200         * @return CXdmDocOperation*
       
   201         */    
       
   202         virtual TInt FormatModRequestL( const CXdmDocumentNode* aDocumentNode );
       
   203         
       
   204     private:
       
   205     
       
   206         /**
       
   207         * Symbian OS default constructor.
       
   208         * @param TInt Default Access Point ID
       
   209         * @return CXdmDocOperation*
       
   210         */     
       
   211         void RunL();
       
   212 
       
   213         /**
       
   214         * Symbian OS default constructor.
       
   215         * @param TInt Default Access Point ID
       
   216         * @return CXdmDocOperation*
       
   217         */     
       
   218         void DoCancel();
       
   219         
       
   220         /**
       
   221         * Symbian OS default constructor.
       
   222         * @param TInt Default Access Point ID
       
   223         * @return CXdmDocOperation*
       
   224         */    
       
   225         TBool StartOperationL();
       
   226         
       
   227         /**
       
   228         * Symbian OS default constructor.
       
   229         * @param TInt Default Access Point ID
       
   230         * @return CXdmDocOperation*
       
   231         */     
       
   232         void CancelOperation();
       
   233         
       
   234         /**
       
   235         * Symbian OS default constructor.
       
   236         * @param TInt Default Access Point ID
       
   237         * @return CXdmDocOperation*
       
   238         */     
       
   239         void HandleTimerEventL();
       
   240 
       
   241     protected:
       
   242         
       
   243         TInt                                 iResult;
       
   244         TInt                                 iCurrentIndex;
       
   245         TBool                                iCompleted;
       
   246         TBool                                iPartial;
       
   247         TUint                                iOptionFlags;
       
   248         CXdmXmlParser*                       iXmlParser;
       
   249         TXdmCompletionData                   iFailureData;
       
   250         TXdmCompletionData*                  iRequestData;
       
   251         TRequestStatus*                      iClientStatus;
       
   252         CXcapUriParser*                      iUriParser;
       
   253         CXcapHttpRequest*                    iActiveRequest;
       
   254         CXcapDocumentNode*                   iDocumentSubset;
       
   255         CXcapDocument&                       iTargetDoc;
       
   256         CXcapOperationFactory&               iOperationFactory;
       
   257         RPointerArray<CXcapHttpRequest>      iRequestQueue;
       
   258 
       
   259     private:  //Data
       
   260     };
       
   261 
       
   262 #endif      //__XCAPHTTPOPERATION__
       
   263             
       
   264 // End of File