utilityapps/loadgen/engine/inc/loadgen_httpreceiver.h
author hgs
Mon, 18 Oct 2010 16:30:05 +0300
changeset 55 2d9cac8919d3
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55
hgs
parents:
diff changeset
     1
hgs
parents:
diff changeset
     2
hgs
parents:
diff changeset
     3
#ifndef CHTTPReceiver_H
hgs
parents:
diff changeset
     4
#define CHTTPReceiver_H
hgs
parents:
diff changeset
     5
hgs
parents:
diff changeset
     6
#include <http.h>
hgs
parents:
diff changeset
     7
#include <mhttpdatasupplier.h>
hgs
parents:
diff changeset
     8
#include <mhttptransactioncallback.h>
hgs
parents:
diff changeset
     9
#include <es_sock.h>
hgs
parents:
diff changeset
    10
#include <chttpformencoder.h> 
hgs
parents:
diff changeset
    11
hgs
parents:
diff changeset
    12
// CONSTANTS
hgs
parents:
diff changeset
    13
// None.
hgs
parents:
diff changeset
    14
hgs
parents:
diff changeset
    15
// MACROS
hgs
parents:
diff changeset
    16
#ifdef _DEBUG
hgs
parents:
diff changeset
    17
#define TRACE( text )         RDebug::Printf( text );
hgs
parents:
diff changeset
    18
#define TRACE2( text, arg )   RDebug::Printf( text, arg );
hgs
parents:
diff changeset
    19
#else
hgs
parents:
diff changeset
    20
#define TRACE( text )
hgs
parents:
diff changeset
    21
#define TRACE2( text, arg )
hgs
parents:
diff changeset
    22
#endif
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
// DATA TYPES
hgs
parents:
diff changeset
    25
// None.
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// FUNCTION PROTOTYPES
hgs
parents:
diff changeset
    28
// None.
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    31
// None.
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
class MHTTPRecvObserver
hgs
parents:
diff changeset
    34
    {
hgs
parents:
diff changeset
    35
    public:
hgs
parents:
diff changeset
    36
       
hgs
parents:
diff changeset
    37
        /**
hgs
parents:
diff changeset
    38
        * Callback for HTTP response received.
hgs
parents:
diff changeset
    39
        * @param aStatus Status code.
hgs
parents:
diff changeset
    40
        * @return None.
hgs
parents:
diff changeset
    41
        */
hgs
parents:
diff changeset
    42
        virtual void HTTPFileReceived( TInt aStatus ) = 0;        
hgs
parents:
diff changeset
    43
    };
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
// CLASS DECLARATION
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
class CHTTPReceiver
hgs
parents:
diff changeset
    48
        : public CBase,
hgs
parents:
diff changeset
    49
          public MHTTPTransactionCallback
hgs
parents:
diff changeset
    50
    {
hgs
parents:
diff changeset
    51
    public: // Constructors and destructor
hgs
parents:
diff changeset
    52
        
hgs
parents:
diff changeset
    53
        /**
hgs
parents:
diff changeset
    54
        * Two-phased constructor.
hgs
parents:
diff changeset
    55
        */
hgs
parents:
diff changeset
    56
        static CHTTPReceiver* NewL( MHTTPRecvObserver& aObserver );
hgs
parents:
diff changeset
    57
        
hgs
parents:
diff changeset
    58
        /**
hgs
parents:
diff changeset
    59
        * Two-phased constructor.
hgs
parents:
diff changeset
    60
        */
hgs
parents:
diff changeset
    61
        static CHTTPReceiver* NewLC( MHTTPRecvObserver& aObserver );        
hgs
parents:
diff changeset
    62
        
hgs
parents:
diff changeset
    63
        /**
hgs
parents:
diff changeset
    64
        * Destructor.
hgs
parents:
diff changeset
    65
        */        
hgs
parents:
diff changeset
    66
        virtual ~CHTTPReceiver();
hgs
parents:
diff changeset
    67
      
hgs
parents:
diff changeset
    68
        /**
hgs
parents:
diff changeset
    69
        * Cancels the current HTTP transaction.
hgs
parents:
diff changeset
    70
        */   
hgs
parents:
diff changeset
    71
        void CancelTransaction();
hgs
parents:
diff changeset
    72
hgs
parents:
diff changeset
    73
        /**
hgs
parents:
diff changeset
    74
        * Opens a connection to destination aUri and sends data using HTTP GET. 
hgs
parents:
diff changeset
    75
        * Callbacks via MHTTPRecvObserver::HTTPFileReceived
hgs
parents:
diff changeset
    76
        * Leaves with KErrNotReady If network is not available
hgs
parents:
diff changeset
    77
        * @param aUri Destination URL, if http scheme not specified, prepends scheme.       
hgs
parents:
diff changeset
    78
        */                                 
hgs
parents:
diff changeset
    79
        void SendHTTPGetL( const TDesC8& aUri );
hgs
parents:
diff changeset
    80
        
hgs
parents:
diff changeset
    81
    protected: // Constructors and destructor
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
        /**
hgs
parents:
diff changeset
    84
        * C++ default constructor.
hgs
parents:
diff changeset
    85
        */
hgs
parents:
diff changeset
    86
        CHTTPReceiver( MHTTPRecvObserver& aObserver );
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
        /**
hgs
parents:
diff changeset
    89
        * Symbian 2nd phase constructor.
hgs
parents:
diff changeset
    90
        */
hgs
parents:
diff changeset
    91
        void ConstructL();
hgs
parents:
diff changeset
    92
      
hgs
parents:
diff changeset
    93
        /**
hgs
parents:
diff changeset
    94
        * Sets HTTP header fields.
hgs
parents:
diff changeset
    95
        * @param aHeaders HTTP headers.
hgs
parents:
diff changeset
    96
        * @param aHdrField Header field to set.
hgs
parents:
diff changeset
    97
        * @param aHdrValue Header field value.
hgs
parents:
diff changeset
    98
        */   
hgs
parents:
diff changeset
    99
        void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField,
hgs
parents:
diff changeset
   100
						const TDesC8& aHdrValue);
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
		//From MHTTPTransactionCallback
hgs
parents:
diff changeset
   103
        /**
hgs
parents:
diff changeset
   104
        * Called by HTTP framework when HTTP events occur.
hgs
parents:
diff changeset
   105
        * @param aTransaction The transaction that the event has occurred on.
hgs
parents:
diff changeset
   106
        * @param aEvent The event that has occurred.
hgs
parents:
diff changeset
   107
        */           
hgs
parents:
diff changeset
   108
		void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
hgs
parents:
diff changeset
   109
		
hgs
parents:
diff changeset
   110
        /**
hgs
parents:
diff changeset
   111
        * Called when RunL leaves from a transaction event.
hgs
parents:
diff changeset
   112
        * @param aError The leave code that RunL left with.
hgs
parents:
diff changeset
   113
        * @param aTransaction The transaction that was being processed.
hgs
parents:
diff changeset
   114
        * @param aEvent The event that was being processed.
hgs
parents:
diff changeset
   115
        * @return KErrNone.
hgs
parents:
diff changeset
   116
        */   
hgs
parents:
diff changeset
   117
		TInt MHFRunError(	TInt aError,
hgs
parents:
diff changeset
   118
						RHTTPTransaction aTransaction,
hgs
parents:
diff changeset
   119
						const THTTPEvent& aEvent);
hgs
parents:
diff changeset
   120
						
hgs
parents:
diff changeset
   121
		/**
hgs
parents:
diff changeset
   122
        * Starts HTTP connection.
hgs
parents:
diff changeset
   123
        */   
hgs
parents:
diff changeset
   124
       	void SetupConnectionL();
hgs
parents:
diff changeset
   125
        
hgs
parents:
diff changeset
   126
        /**
hgs
parents:
diff changeset
   127
        * Utility:Checks for http uri scheme and prepends if not exists to the url
hgs
parents:
diff changeset
   128
        * @param aUri UriParser.
hgs
parents:
diff changeset
   129
        * @param aURL URL to check for.
hgs
parents:
diff changeset
   130
        * @return None 
hgs
parents:
diff changeset
   131
        */
hgs
parents:
diff changeset
   132
        void CheckForHTTPSchemeL(TUriParser8& aUri, const TDesC8& aURL);
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
        /**
hgs
parents:
diff changeset
   135
        * Utility: finish receiving, call calback HTTPFileReceived()
hgs
parents:
diff changeset
   136
        * @param aError to be signaled
hgs
parents:
diff changeset
   137
        * @return None 
hgs
parents:
diff changeset
   138
        */
hgs
parents:
diff changeset
   139
        void Finalize();
hgs
parents:
diff changeset
   140
        
hgs
parents:
diff changeset
   141
    private:
hgs
parents:
diff changeset
   142
      	
hgs
parents:
diff changeset
   143
        // Request uri, might need to prepend http scheme.
hgs
parents:
diff changeset
   144
        HBufC8*					iUrl;
hgs
parents:
diff changeset
   145
        
hgs
parents:
diff changeset
   146
        // RSocketServ object.
hgs
parents:
diff changeset
   147
	    RSocketServ 			iSocketServ;
hgs
parents:
diff changeset
   148
        
hgs
parents:
diff changeset
   149
        // RConnection object.
hgs
parents:
diff changeset
   150
	    RConnection 			iConnection;
hgs
parents:
diff changeset
   151
	    
hgs
parents:
diff changeset
   152
	    // HTTP session.
hgs
parents:
diff changeset
   153
		RHTTPSession			iSession;
hgs
parents:
diff changeset
   154
		
hgs
parents:
diff changeset
   155
		// HTTP transaction used for request.
hgs
parents:
diff changeset
   156
		RHTTPTransaction		iTransaction;
hgs
parents:
diff changeset
   157
	
hgs
parents:
diff changeset
   158
		// Observer to notify.
hgs
parents:
diff changeset
   159
		MHTTPRecvObserver&	    iObserver;	
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
		// ETrue if transaction in progress.
hgs
parents:
diff changeset
   162
		TBool					iRunning;	
hgs
parents:
diff changeset
   163
		
hgs
parents:
diff changeset
   164
		// ETrue if connection set up done.
hgs
parents:
diff changeset
   165
		TBool 					iConnectionSetupDone;                        
hgs
parents:
diff changeset
   166
		
hgs
parents:
diff changeset
   167
		// Response Status 
hgs
parents:
diff changeset
   168
		TInt                    iResponseStatus;
hgs
parents:
diff changeset
   169
		
hgs
parents:
diff changeset
   170
#ifdef _DEBUG
hgs
parents:
diff changeset
   171
		// Http response body written to file
hgs
parents:
diff changeset
   172
		RFile 					iResponseFile;
hgs
parents:
diff changeset
   173
		
hgs
parents:
diff changeset
   174
		// RFs to be used for writing to iResponseFile
hgs
parents:
diff changeset
   175
		RFs                     iFs;
hgs
parents:
diff changeset
   176
#endif
hgs
parents:
diff changeset
   177
		
hgs
parents:
diff changeset
   178
};
hgs
parents:
diff changeset
   179
    
hgs
parents:
diff changeset
   180
#endif
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
// CHTTPReceiver_H
hgs
parents:
diff changeset
   183
// End of File