diff -r ccd8e69b5392 -r 496ad160a278 mmsharing/mmshavailability/inc/musavacapabilityquerybase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshavailability/inc/musavacapabilityquerybase.h Fri Jun 11 13:36:18 2010 +0300 @@ -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 // 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& 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& 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