--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webservices/wsoviplugin/inc/wsoviservicesession.h Thu Jan 07 16:19:19 2010 +0200
@@ -0,0 +1,253 @@
+/*
+* Copyright (c) 2008 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 declaration
+*
+*/
+
+
+
+
+
+
+
+
+#ifndef WSOVI_SERVICE_SESSION_H
+#define WSOVI_SERVICE_SESSION_H
+
+// INCLUDES
+#include "msenremoteserviceconsumer.h"
+#include "msenserviceinvocationframework.h"
+
+#include "wsoviplugin.h"
+#include "senwebservicesession.h"
+#include "wsovisessionconsumer.h"
+#include <xmlengfilecontainer.h>
+#include <xmlengchunkcontainer.h>
+#include <xmlengelement.h>
+
+class CWSOviCredentialObserver;
+class CSenHttpTransportProperties;
+
+// CONSTANTS
+namespace WSOviSession
+ {
+ _LIT8(KProviderIDTag, "<ProviderID>");
+ _LIT8(KProviderIDEndTag, "</ProviderID>");
+ _LIT8(KTrustAnchorTag, "<TrustAnchor>");
+ _LIT8(KTrustAnchorEndTag, "</TrustAnchor>");
+ _LIT8(KTrustAnchorElementLocalName, "TrustAnchor");
+ _LIT8(KTokenCreationTimeTag, "<TokenCreationTime>");
+ _LIT8(KTokenCreationTimeEndTag, "</TokenCreationTime>");
+ _LIT8(KTokenCreationTimeLocalName, "TokenCreationTime");
+ _LIT8(KTTLTag, "<TTL>");
+ _LIT8(KTTLEndTag, "</TTL>");
+ _LIT8(KTTLLocalName, "TTL");
+ _LIT8(KTokenSecretTag, "<TokenSecret>");
+ _LIT8(KTokenSecretEndTag, "</TokenSecret>");
+ _LIT8(KTokenSecretLocalName, "TokenSecret");
+
+ }
+
+
+
+// CLASS DECLARATION
+/**
+ * WSOvi Service Session.
+ * Represent session between client and service in ws* framework.
+ */
+class CWSOviServiceSession : public CSenWebServiceSession
+ {
+
+friend class CWSOviPlugin;
+
+public: // Constructors and destructor
+
+ static CWSOviServiceSession* NewL(MSIF& aFramework);
+ static CWSOviServiceSession* NewLC(MSIF& aFramework);
+
+ virtual ~CWSOviServiceSession();
+
+ // From SenServiceSession
+ virtual MSenRemoteServiceConsumer* RemoteConsumerL(
+ const TDesC8& aSenderID);
+
+ virtual TBool Matches(MSenServiceDescription& aPattern);
+ virtual TInt ScoreMatchL(MSenServiceDescription& aPattern);
+
+ virtual void WriteExtensionsAsXMLToL(RWriteStream& aWriteStream);
+
+
+ //From SenWebServiceSession
+ virtual TInt SendL( const TDesC8& aMessage,
+ const TDesC8& aTransportProperties,
+ MSenRemoteServiceConsumer& aConsumer,
+ TInt& aTxnId,
+ HBufC8*& aRevalidationError );
+
+ virtual TInt SubmitL(const TDesC8& aMessage,
+ const TDesC8& aTransportProperties,
+ MSenRemoteServiceConsumer& aConsumer,
+ HBufC8*& aResponse);
+
+ virtual TInt SubmitSoapL(const TDesC8& aSoapMessage,
+ const TDesC8& aTransportProperties,
+ MSenRemoteServiceConsumer& aConsumer,
+ HBufC8*& aResponse);
+
+ virtual TInt SendSoapL( const TDesC8& aSoapMessage,
+ const TDesC8& aTransportProperties,
+ MSenRemoteServiceConsumer& aConsumer,
+ TInt& aTxnId,
+ HBufC8*& aRevalidationError );
+
+
+ virtual TInt SendErrorToConsumerL( const TInt aErrorCode,
+ HBufC8* apError,
+ const TInt aTxnId,
+ MSenRemoteServiceConsumer& aConsumer,
+ MSenProperties* aResponseTransportProperties );
+ virtual TInt SendToConsumerL(HBufC8* aMessage,
+ const TInt aTxnId,
+ MSenRemoteServiceConsumer& aConsumer,
+ MSenProperties* aResponseTransportProperties = NULL);
+
+ virtual TInt InitializeFromL(MSenServiceDescription& aDescription);
+
+
+
+ /**
+ add consumer. Eeach session has multiple consumers.From 3rd parties point of view
+ its mean 2 connection per the same service description.
+ */
+ virtual TInt AddConsumerL(MSenRemoteServiceConsumer& aConsumer);
+
+ /**
+ remove consumer
+ */
+ virtual TInt RemoveConsumerL(MSenRemoteServiceConsumer& aConsumer);
+
+ /**
+ Framework specific method. Process message before sending to network
+ In other words add specific headers, and store correlation info in proper consumer
+ */
+ virtual TInt MessageForSendingL( CSenHttpTransportProperties*& aTP,
+ const TDesC8& aSenderID);
+
+ virtual TInt SetTransportPropertiesL( const TDesC8& aProperties,
+ MSenRemoteServiceConsumer& aConsumer );
+ virtual TBool IsExpiredL();
+ /**
+ * Clear credential for current session , make it invalid.
+ * @since S60 5.0
+ */
+ void ClearCredentialL();
+
+ //GData token has undefined life time, threfore default FOREVER life time is set
+ void SetMaxValidUntil();
+
+
+
+
+ /**
+ * Overload addcredential from WebServiceSession. Calucate also state,
+ * @since S60 4.0
+ */
+ void AddCredentialL(const TDesC8& aSecurity, TTime aValidUntil);
+ void AddCredentialL(RSenCredentialPtr aCredentialPtr, TTime aValidUntil);
+ void SetProviderIDL(const TDesC8& aProviderId);
+ TPtrC8 ProviderID();
+ void SetTrustAnchorL(const TDesC8& aURI);
+ TPtrC8 TrustAnchor();
+ TInt ComputeStatusL();
+ void SetSessionContext(CWSOviSessionContext* aContext);
+ CWSOviSessionContext* SessionContext();
+
+ void AddSecurityTokenToContextL();
+
+ void AddPropertiesFromSessionContextToCredentialL();
+
+ virtual void CredentialChanged(TSenCredentialChange aChange, TAny* aPointer);
+ TInt RevalidateMobileTicketIfExpiredL(HBufC8*& aErrorMessage);
+ TBool ExistConsumerL();
+
+ // Add ProviderID to primary keys (in addition to Endpoint, Contract and FrameworkID):
+ TBool HasEqualPrimaryKeysL( MSenServiceDescription& aCandidate );
+
+ void ActiveTicketObserverL();
+ TInt ShareTokenWithL( CWSOviServiceSession* aWSStarSessionDst);
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CWSOviServiceSession(TDescriptionClassType aType, MSIF& aFramework);
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ // New functions
+
+
+ /**
+ * To obtain consumer during processing INBOUND. We have to dispatch using wsa:RelatesTo
+ */
+ TInt SessionConsumerL(CWSOviMessageContext*& aMessage,
+ CWSOviSessionConsumer*& aSessionConsumer);
+
+ /**
+ * To obtain consumer during processing OUTBOUND.
+ */
+ TInt SessionConsumerL( const TDesC8& aSenderID, CWSOviSessionConsumer*& aSessionConsumer);
+ void CreateAndParseSoapMessageL(const TDesC8& aSoapMessage, CSenSoapMessage*& aMessage, HBufC8*& aBody);
+ CSenHttpTransportProperties* ApplyTransportPropertiesLC(const TDesC8& aTransportProperties);
+ void PrepareOutCtxL(const TDesC8& aMessageBody);
+ void DestroyOutCtx();
+ TBool HasSuperClass( TDescriptionClassType aType );
+ TBool AmIHostletSession();
+ virtual void FillCredentialIdentifierL(CSenCredentialIdentifier& aIdentifier);
+
+ CSenIdentityProvider* LookupIdentityProviderL();
+ void VerifyPermissionL();
+ void ClearCredentialPropertiesFromContext();
+ TInt CanHandleErrorL();
+ void AdaptEndpointL(TBool aToOrginal);
+ CSenIdentityProvider* IdentityProviderFromCoreL(const TDesC8& aProviderID);
+
+//Data
+
+ CWSOviMessageContext* iOutContext;//owned, live only within one sending
+ CWSOviMessageContext* iInContext;//owned, live only within one sending
+ CWSOviSessionContext* iSessionContext;//owned
+
+ CWSOviCredentialObserver* iTokenObs;
+
+ //trust anchor is a pointer to providerID.
+ HBufC8* iTrustAnchor;
+ TInt iSubmitState;
+ TInt iRenewCounter;
+ TInt iRetryCounter;
+ HBufC8* iProviderID;
+ HBufC8* iTransProp;
+ TTime iClientTime;
+ TTime iServerTime;
+ HBufC8* iOrginalEndpoint;
+ };
+
+#endif // WSOvi_SERVICE_SESSION_H
+
+// End of File
+