--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wshttpchanneltransportplugin/inc/senhttpchannelimpl.h Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,217 @@
+/*
+* Copyright (c) 2002-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: Header description
+*
+*/
+
+
+
+
+
+
+
+
+
+
+
+#ifndef SEN_HTTP_CHANNEL_IMPL_H
+#define SEN_HTTP_CHANNEL_IMPL_H
+
+// INCLUDES
+#include <badesca.h>
+#include <http/mhttpauthenticationcallback.h>
+#include <flogger.h>
+#include <es_sock.h>
+#include <commdbconnpref.h>
+
+#include "senhttpchannel.h"
+#include "MSenElement.h"
+#include "SenIdentityProvider.h"
+#include "senpointermap.h"
+#include "senmtomtxnstate.h"
+
+_LIT(KColon, ":");
+
+// Multipart message
+_LIT8(KMimeAccept, "*/*");
+
+// Panics
+_LIT(KUnrecognisedValueTypeOfContentTypePanicText, "ContentType has unrecognised value");
+
+// FORWARD DECLARATIONS
+class CSenHttpEventHandler;
+class CSenTxnState;
+class CSenAtomEntry;
+//class CSenMtomTxnState;
+class MSenIdentityManager;
+//class CSenElement;
+class CSenLayeredHttpTransportProperties;
+
+// CLASS DECLARATION
+class CSenHttpChannelImpl : public CSenHttpChannel,
+ public MHTTPAuthenticationCallback
+ {
+public:
+ static CSenHttpChannelImpl* NewL(MSenIdentityManager& aManager);
+ static CSenHttpChannelImpl* NewLC(MSenIdentityManager& aManager);
+ static CSenHttpChannelImpl* NewL(MSenIdentityManager& aManager, TUint32 aIapId);
+ static CSenHttpChannelImpl* NewLC(MSenIdentityManager& aManager, TUint32 aIapId);
+
+ virtual ~CSenHttpChannelImpl();
+
+ void HandleResponseHeadersL(RHTTPTransaction aTransaction);
+ void HandleResponseBodyDataL(RHTTPTransaction aTransaction);
+ void HandleResponseL(RHTTPTransaction aTransaction);
+ void HandleRunErrorL(RHTTPTransaction aTransaction, TInt aError);
+ void HandleRedirectRequiresConfirmationL(RHTTPTransaction aTransaction);
+
+ // Functions from base classes
+ virtual TInt SendL(MSenResponseObserver& aObserver,
+ const TDesC8& aUri,
+ const TDesC8& aContent,
+ CSenLayeredHttpTransportProperties& aProps);
+
+ virtual TInt SendL(MSenResponseObserver& aObserver,
+ const TDesC8& aUri,
+ CSenSoapEnvelope2& aContent,
+ CSenLayeredHttpTransportProperties& aProps);
+ virtual TInt SendL(MSenResponseObserver& aObserver,
+ const TDesC8& aUri,
+ CSenAtomEntry& aContent,
+ CSenLayeredHttpTransportProperties& aProps);
+
+ virtual TInt SendL(MSenResponseObserver& aObserver,
+ const TDesC8& aUri,
+ const RFile& aFile,
+ CSenLayeredHttpTransportProperties& aProps);
+
+
+ virtual void SetProxyL(const TDesC8& aProxyHostBaseAddr,
+ TInt aProxyPort);
+ virtual void SetProxyL(const TDesC8& aProxyAddrStr);
+ virtual void SetHttpVersionL(TInt aVersion);
+ virtual void SetProxyUsageL(TBool aProxyUsage);
+ virtual void SetSecureDialogL(TBool aSecureDialog);
+
+ TInt CancelTransaction(const TInt aTxnId);
+ void CancelAllTransactions();
+
+ void SetExplicitIapDefined(TBool aExplicitIapDefined);
+ /*
+ * Getter for currently effective IAP ID
+ * @param aIapId will be assigned to hold
+ * the value of that Internet Access Point
+ * identifier (an unsigned integer utilized
+ * by CommsDB API).
+ * @return EFalse, if IAP ID has not been
+ * specified. Otherwise, returns ETrue.
+ */
+ virtual TBool EffectiveIapId(TUint32 &aIapId);
+
+ // Helper, for file logging.
+ //RFileLogger* Log() const;
+ void NotifyMoreBodyL();
+
+ // Functions from MHTTPAuthenticationCallback
+ virtual TBool GetCredentialsL(const TUriC8& aURI, RString aRealm,
+ RStringF aAuthenticationType,
+ RString& aUsername,
+ RString& aPassword);
+ void EnableTimeOutL(TInt aTxnId, TInt aTimeOutSec);
+ void DisableTimeOutL(TInt aTxnId);
+ virtual TInt32 UsedIap();
+
+protected:
+ CSenHttpChannelImpl(MSenIdentityManager& aManager);
+
+ void AddRequestHeadersL(RHTTPHeaders& aHeaders, CSenLayeredHttpTransportProperties& aProps);
+ void AppendNewTxnStateL(CSenTxnState* aTxnState);
+ void DeleteTxnState(TInt aTxnId);
+ CSenTxnState* FindTxnState(TInt aTxnId, TInt* aIndex = NULL);
+ /**
+ * Applies new IAP preferencies to current HTTP Session (RHTTPSession)
+ * @param aIapId new IAP ID
+ * @param aDialogPref shows is IAPDialog allowed or not
+ * @param aConnection is the connection to be attached to HTTP session
+ * @param aSocketServer is the socket server to be attached to HTTP session
+ * Leaves with system-wide error code if preferences cannot be set.
+ */
+ TInt SetIapPrefsL( TUint32 aIapId, TBool aDialogPref, RConnection& aConnection, RSocketServ& aSocketServer );
+ TInt SetSnapPrefsL( TUint32 aSnapId, TBool aDialogPref, RConnection& aConnection, RSocketServ& aSocketServer );
+
+ //void SetupConnectionWithIapPrefsL( TUint32 aIapId, RConnection& aConnection, RSocketServ& aSocketServer );
+ //void AttachSocketServerAndConnectionWithHttpSession( TUint32 aIapId, RConnection& aConnection, RSocketServ& aSocketServer );
+
+ void ConstructL();
+ void ConstructL( TUint32 aIapId );
+
+
+private:
+
+ // New functions
+
+
+ TPtrC8 SoapActionL(MSenElement& aSoapEnvelope);
+ TInt SubmitRequestL(MSenResponseObserver& aObserver,
+ const TDesC8& aUri,
+ const TDesC8* aContentType = NULL,
+ const TDesC8* aContent = NULL);
+
+ TInt SubmitRequestL(MSenResponseObserver& aObserver,
+ const TDesC8& aUri,
+ MSenElement& aMessage,
+ const TDesC8* aContentType = NULL);
+
+ TInt InvokeHttpMethodL(CSenTxnState* aTxnState,
+ CSenLayeredHttpTransportProperties& aProps);
+
+ void ListFilters();
+ void DumpRespHeadersL(RHTTPTransaction& aTrans);
+ void DumpBodyData(const TDesC8& aData);
+ TInt ContentTypeParamValueL(const RHTTPHeaders& aResponseHeaders,
+ const RStringF& aContent,
+ const TPtrC8& aParamName,
+ SenMultiPartUtils::TMultiPartContentType& aMultiPartContentType);
+
+protected:
+ RSocketServ iSockServ;
+ RConnection iConnection;
+ TUint32 iIapId;
+ TUint32 iUsedIapId;
+ TUint32 iSnapId;
+ RStringPool iStringPool;
+ RHTTPSession iSess;
+ CSenHttpEventHandler* iTransObs;
+ //RFileLogger iLog;
+
+private:
+
+ CArrayPtrFlat<CSenTxnState>* iTxnStates;
+ MSenIdentityManager& iManager;
+ TInt iBasicConnectionTries;
+ CSenIdentityProvider* iSessionAuthentication; // NOT owned
+ TBool iPasswordFromUser; // Is ETrue if data from identitymanager is
+ TPtrC8 iContentType; // content type of usual response
+ TBool iExplicitIapDefined;
+ HBufC8* iProxyHostPort;
+ TBool iXopResponse;
+ TBool iDeflateFilter;//Is true if deflate filter loaded for a session
+ TBool iHasHttpContentType;
+ SenMultiPartUtils::TMultiPartContentType iMultiPartContentType; // content type of MultiPart response
+ RHTTPTransaction iHttpTransaction ;
+ };
+
+#endif //SEN_HTTP_CHANNEL_IMPL_H
+
+// End of file