--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/inc/musavacapabilityquerybase.h Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,224 @@
+/*
+* Copyright (c) 2005-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: Sent capability query (OPTIONS)
+*
+*/
+
+
+#ifndef CMUSAVACAPABILITYQUERYBASE_H
+#define CMUSAVACAPABILITYQUERYBASE_H
+
+
+#include <e32base.h> // CBase
+
+#ifdef CAPABILITY_UNIT_TESTING
+#include "capabilitytestdefs.h"
+#else
+#define CAPABILITY_UT_DEFINITIONS
+#endif
+
+
+
+class CMusAvaCapability;
+class CSIPConnection;
+class CSIPProfile;
+class CSdpDocument;
+
+class CSIPClientTransaction;
+class CMusAvaTerminal;
+class CSIPHeaderBase;
+class CUri8;
+
+const TInt KCapabilityQueryNotReady = 0;
+const TInt KCapabilityCapabilitesReady = 1;
+const TInt KCapabilityCapabilitesNotFound = 2;
+const TInt KCapabilityCapabilitiesForbidden = 3;
+
+
+/**
+ * Sent capability query (OPTIONS)
+ *
+ * @lib AlwaysOnlineSwisPlugin.dll
+ */
+class CMusAvaCapabilityQueryBase : public CBase
+ {
+
+public:
+
+ enum TState
+ {
+ ECapabilityQueryCreated,
+ ECapabilityQueryPrepared,
+ ECapabilityQueryExecuting,
+ ECapabilityQueryCompleted
+ };
+
+public: // constructors and destructor
+
+ virtual ~CMusAvaCapabilityQueryBase();
+
+
+protected: // constructors
+
+ CMusAvaCapabilityQueryBase( CMusAvaCapability& aCapability,
+ CSIPConnection& aSIPConnection,
+ CSIPProfile& aProfile );
+
+
+ void ConstructL( const TDesC& aSipAddress );
+
+public: // new functions
+
+ /**
+ * Executes OPTIONS query
+ *
+ */
+ virtual void ExecuteL();
+
+ /**
+ * Complets the query
+ *
+ * @param aResponse a response to query as SIP client transaction
+ */
+ void CompletedL( const CSIPClientTransaction& aResponse );
+
+ /**
+ * Cancels query, if transaction is created by this query
+ *
+ * @param aResponse a response to query as SIP client transaction
+ */
+ void Canceled( const CSIPClientTransaction& aTransaction );
+
+ /**
+ * Returns associated terminal
+ *
+ * @return returns associated terminal
+ */
+ CMusAvaTerminal& Terminal();
+
+ /**
+ * Returns the sdp content.
+ *
+ */
+ HBufC8* ContentLC();
+
+
+
+public: // new functions
+
+ /**
+ * Returns state of query
+ *
+ * @return state of query
+ */
+ TState State() const;
+
+ /**
+ * Returns result of query
+ *
+ * @return result of query
+ */
+ TInt Result() const;
+
+
+protected: // abstract functions
+
+ /**
+ * Prepares query
+ *
+ * @param aRequestHeaders headers container for request
+ */
+ virtual void Prepare( RPointerArray<CSIPHeaderBase>& aRequestHeaders ) = 0;
+
+ /**
+ * Complets the query
+ *
+ * @param aResponse a response to query as SIP client transaction
+ */
+ virtual void DoCompletedL( const CSIPClientTransaction& aResponse ) = 0;
+
+
+protected: // new functions
+
+ /**
+ * Returns capablity, which is beed queried
+ *
+ * @return capablity
+ */
+ const CMusAvaCapability& Capability() const;
+
+ /**
+ * Sets state
+ *
+ * @param aState new state
+ */
+ void SetState( TState aState );
+
+ /**
+ * Sets result
+ *
+ * @param aResult the result
+ */
+ void SetResult( TInt aResult );
+
+ /**
+ * Adds Contact header to request's user headers
+ *
+ * @param aRequestHeaders request's user headers
+ */
+ virtual void AddContactHeaderL( RPointerArray<CSIPHeaderBase>& aRequestHeaders );
+
+ /**
+ * Resets and destroys transaction
+ */
+ void ResetAndDestroyTrx();
+
+ /**
+ * Returns local address based on profile
+ *
+ * @return local adderss
+ */
+ const CUri8& LocalAddress() const;
+
+ /**
+ * Some Multimediasharing specific sdp contents are added.
+ *
+ */
+ void OtherSDPHeadersL( CSdpDocument& aResponseContent );
+
+
+private: // NOT own data
+
+ CMusAvaCapability& iCapability;
+ CSIPConnection& iSIPConnection;
+ CSIPProfile& iProfile;
+
+ TState iState;
+ TInt iResult;
+
+ CMusAvaTerminal* iTerminal;
+
+private: // own data
+
+ CUri8* iRegisteredContact;
+ CUri8* iOriginator;
+ CSIPClientTransaction* iTrx;
+
+//for unit testing
+ CAPABILITY_UT_DEFINITIONS
+
+ };
+
+
+#endif // CMUSAVACAPABILITYQUERYBASE_H