mmsharing/mmshavailability/inc/musavacapabilityquerybase.h
changeset 0 f0cf47e981f9
child 31 33a5d2bbf6fc
--- /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