utilityapps/loadgen/engine/inc/loadgen_httpreceiver.h
changeset 55 2d9cac8919d3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utilityapps/loadgen/engine/inc/loadgen_httpreceiver.h	Mon Oct 18 16:30:05 2010 +0300
@@ -0,0 +1,183 @@
+
+
+#ifndef CHTTPReceiver_H
+#define CHTTPReceiver_H
+
+#include <http.h>
+#include <mhttpdatasupplier.h>
+#include <mhttptransactioncallback.h>
+#include <es_sock.h>
+#include <chttpformencoder.h> 
+
+// CONSTANTS
+// None.
+
+// MACROS
+#ifdef _DEBUG
+#define TRACE( text )         RDebug::Printf( text );
+#define TRACE2( text, arg )   RDebug::Printf( text, arg );
+#else
+#define TRACE( text )
+#define TRACE2( text, arg )
+#endif
+
+// DATA TYPES
+// None.
+
+// FUNCTION PROTOTYPES
+// None.
+
+// FORWARD DECLARATIONS
+// None.
+
+class MHTTPRecvObserver
+    {
+    public:
+       
+        /**
+        * Callback for HTTP response received.
+        * @param aStatus Status code.
+        * @return None.
+        */
+        virtual void HTTPFileReceived( TInt aStatus ) = 0;        
+    };
+
+// CLASS DECLARATION
+
+class CHTTPReceiver
+        : public CBase,
+          public MHTTPTransactionCallback
+    {
+    public: // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CHTTPReceiver* NewL( MHTTPRecvObserver& aObserver );
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CHTTPReceiver* NewLC( MHTTPRecvObserver& aObserver );        
+        
+        /**
+        * Destructor.
+        */        
+        virtual ~CHTTPReceiver();
+      
+        /**
+        * Cancels the current HTTP transaction.
+        */   
+        void CancelTransaction();
+
+        /**
+        * Opens a connection to destination aUri and sends data using HTTP GET. 
+        * Callbacks via MHTTPRecvObserver::HTTPFileReceived
+        * Leaves with KErrNotReady If network is not available
+        * @param aUri Destination URL, if http scheme not specified, prepends scheme.       
+        */                                 
+        void SendHTTPGetL( const TDesC8& aUri );
+        
+    protected: // Constructors and destructor
+
+        /**
+        * C++ default constructor.
+        */
+        CHTTPReceiver( MHTTPRecvObserver& aObserver );
+
+        /**
+        * Symbian 2nd phase constructor.
+        */
+        void ConstructL();
+      
+        /**
+        * Sets HTTP header fields.
+        * @param aHeaders HTTP headers.
+        * @param aHdrField Header field to set.
+        * @param aHdrValue Header field value.
+        */   
+        void SetHeaderL(RHTTPHeaders aHeaders, TInt aHdrField,
+						const TDesC8& aHdrValue);
+
+		//From MHTTPTransactionCallback
+        /**
+        * Called by HTTP framework when HTTP events occur.
+        * @param aTransaction The transaction that the event has occurred on.
+        * @param aEvent The event that has occurred.
+        */           
+		void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
+		
+        /**
+        * Called when RunL leaves from a transaction event.
+        * @param aError The leave code that RunL left with.
+        * @param aTransaction The transaction that was being processed.
+        * @param aEvent The event that was being processed.
+        * @return KErrNone.
+        */   
+		TInt MHFRunError(	TInt aError,
+						RHTTPTransaction aTransaction,
+						const THTTPEvent& aEvent);
+						
+		/**
+        * Starts HTTP connection.
+        */   
+       	void SetupConnectionL();
+        
+        /**
+        * Utility:Checks for http uri scheme and prepends if not exists to the url
+        * @param aUri UriParser.
+        * @param aURL URL to check for.
+        * @return None 
+        */
+        void CheckForHTTPSchemeL(TUriParser8& aUri, const TDesC8& aURL);
+
+        /**
+        * Utility: finish receiving, call calback HTTPFileReceived()
+        * @param aError to be signaled
+        * @return None 
+        */
+        void Finalize();
+        
+    private:
+      	
+        // Request uri, might need to prepend http scheme.
+        HBufC8*					iUrl;
+        
+        // RSocketServ object.
+	    RSocketServ 			iSocketServ;
+        
+        // RConnection object.
+	    RConnection 			iConnection;
+	    
+	    // HTTP session.
+		RHTTPSession			iSession;
+		
+		// HTTP transaction used for request.
+		RHTTPTransaction		iTransaction;
+	
+		// Observer to notify.
+		MHTTPRecvObserver&	    iObserver;	
+
+		// ETrue if transaction in progress.
+		TBool					iRunning;	
+		
+		// ETrue if connection set up done.
+		TBool 					iConnectionSetupDone;                        
+		
+		// Response Status 
+		TInt                    iResponseStatus;
+		
+#ifdef _DEBUG
+		// Http response body written to file
+		RFile 					iResponseFile;
+		
+		// RFs to be used for writing to iResponseFile
+		RFs                     iFs;
+#endif
+		
+};
+    
+#endif
+
+// CHTTPReceiver_H
+// End of File