--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/engine/transport/inc/catalogshttpstack.h Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,176 @@
+/*
+* Copyright (c) 2006 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:
+*
+*/
+
+
+#ifndef C_CATALOGSHTTPSTACK_H
+#define C_CATALOGSHTTPSTACK_H
+
+#include <http/mhttpdatasupplier.h>
+#include <http/mhttptransactioncallback.h>
+#include <http/mhttpauthenticationcallback.h>
+
+#include "catalogshttpstackobserver.h"
+#include "catalogskeyvaluepair.h"
+#include "catalogsconnectionmethod.h"
+
+
+// Constants
+const TInt KRequestTimeoutMicroseconds( 180000000 );
+
+// Forward declarations
+class RHTTPSession;
+class RHTTPTransaction;
+class CCatalogsHttpConnectionCreator;
+class CCatalogsHttpConnectionManager;
+class CCatalogsConnection;
+
+/**
+ * Symbian implementation of a HTTP stack.
+ */
+class CCatalogsHttpStack :
+ public CActive,
+ public MHTTPTransactionCallback,
+ public MHTTPDataSupplier,
+ public MHTTPAuthenticationCallback
+ {
+public:
+
+ static CCatalogsHttpStack* NewL(
+ MCatalogsHttpStackObserver* aObserver,
+ CCatalogsConnection& aConnection,
+ CCatalogsHttpConnectionCreator& aConnectionCreator );
+
+ static CCatalogsHttpStack* NewLC(
+ MCatalogsHttpStackObserver* aObserver,
+ CCatalogsConnection& aConnection,
+ CCatalogsHttpConnectionCreator& aConnectionCreator );
+
+ virtual ~CCatalogsHttpStack();
+
+private:
+
+ void ConstructL();
+ CCatalogsHttpStack(
+ MCatalogsHttpStackObserver* iObserver,
+ CCatalogsConnection& aConnection,
+ CCatalogsHttpConnectionCreator& aConnectionCreator );
+
+ void SetHeaderL( RHTTPHeaders aHeaders,
+ TInt aHdrField,
+ const TDesC8& aHdrValue);
+
+
+public:
+
+ void ClearHeaders();
+
+ void AddHeaderL( const CCatalogsKeyValuePair* aPair );
+
+ void IssueHttpRequestL( const TDesC8& aMethod,
+ const TDesC8& aURI,
+ const TDesC8& aContentType,
+ const TDesC8& aBody );
+
+ void CancelTransaction();
+
+ void ReleaseBody();
+
+
+ void SetConnectionMethodL( const TCatalogsConnectionMethod& aMethod );
+
+ /**
+ * Real accesspoint id if connected
+ */
+ TUint32 AccessPointID() const;
+
+ void SetObserver( MCatalogsHttpStackObserver* aObserver );
+
+
+ /**
+ * @param aManager Connection manager. Ownership is NOT transferred
+ */
+ void SetConnectionManager( CCatalogsHttpConnectionManager* aManager );
+
+private:
+
+ void MHFRunL( RHTTPTransaction aTransaction, const THTTPEvent& aEvent );
+ TInt MHFRunError( TInt aError,
+ RHTTPTransaction aTransaction,
+ const THTTPEvent& aEvent );
+
+private:
+
+ void ReleaseData();
+ TBool GetNextDataPart( TPtrC8& aDataPart );
+ TInt Reset();
+ TInt OverallDataSize();
+
+ void SetTimeoutTimer();
+ void CancelTimeoutTimer();
+
+private:
+
+ TBool GetCredentialsL( const TUriC8& aURI,
+ RString aRealm,
+ RStringF aAuthenticationType,
+ RString& aUsername,
+ RString& aPassword );
+
+private:
+
+ void RunL();
+ void DoCancel();
+
+private:
+
+ enum
+ {
+ ENone,
+ ETimeout
+ } iState;
+
+ RTimer iTimer;
+
+ RHTTPSession iSession;
+ RHTTPTransaction iTransaction;
+
+ RPointerArray<CCatalogsKeyValuePair> iUserHeaders;
+
+ TBool iConnected;
+ TCatalogsConnectionMethod iConnectionMethod;
+
+
+ TInt iLastError;
+
+ RStringPool iPool;
+ TStringTable const& iTable;
+
+ MHTTPDataSupplier* iBody;
+
+ MCatalogsHttpStackObserver* iObserver; // Used for passing body data and
+ // events to the client.
+ HBufC8* iPostData; // Data for HTTP requests
+ TBool iRunning; // ETrue, if transaction running
+
+ CCatalogsConnection& iConnection;
+ CCatalogsHttpConnectionCreator& iConnectionCreator;
+ TBool iConnectionOpened; // ETrue if iConnection is open
+ CCatalogsHttpConnectionManager* iConnectionManager; // not owned
+
+ };
+
+#endif // C_CATALOGSHTTPSTACK_H