diff -r ccd8e69b5392 -r 496ad160a278 mmsharing/mmshavailability/inc/musavaterminal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshavailability/inc/musavaterminal.h Fri Jun 11 13:36:18 2010 +0300 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2005-2007 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: Discovered terminal +* +*/ + +#ifndef CMUSAVATERMINAL_H +#define CMUSAVATERMINAL_H + +#include // CBase +#include "musunittesting.h" + + +class CMusAvaCapabilityQueryBase; +class CMusAvaCapability; +class CSIPClientTransaction; +class CSIPServerTransaction; +class CMusAvaCapabilityExchange; +class CSdpDocument; +class CSIPHeaderBase; +class CSIPResponseElements; + +/** + * Discovered terminal + * + * @lib musavailabilityplugin.dll + */ +class CMusAvaTerminal : public CBase + { + +public: // constructors and destructor + + + static CMusAvaTerminal* NewL( CMusAvaCapabilityExchange& aExchange, + const TDesC8& aTerminalUri, + const TDesC8& aTerminalId ); + + virtual ~CMusAvaTerminal(); + + +private: // constructors + + CMusAvaTerminal( CMusAvaCapabilityExchange& aExchange ); + + void ConstructL( const TDesC8& aTerminalUri , + const TDesC8& aTerminalId ); + + +public: // new functions + + /** + * Returns ID + * + * @return ID + */ + const TDesC8& Id() const; + + /** + * Returns (remote) URI + * + * @return (remote) URI + */ + const TDesC8& Uri() const; + + /** + * Checks if terminal matches given condition + * + * @param aTerminalUri terminal uri + * @param aTerminalId terminal uri + * @return ETrue, if there is a match + */ + TBool MatchL( const TDesC8& aTerminalUri, + const TDesC8& aTerminalId = KNullDesC8 ); + + /** + * Returns requested query (query from peer), if any + * + * @return executed query or NULL + */ + const CMusAvaCapability* RequestedQuery() const; + + /** + * Executes capability query. + * + * @param aQuery query to execute, ownership is transferred + */ + void ExecuteQueryL( CMusAvaCapabilityQueryBase* aQuery ); + + /** + * Called when final response to OPTIONS has been received + * + * @param aResponse final response to OPTIONS + * @return EFalse, if response was not consumed + */ + TBool QueryCompletedL( const CSIPClientTransaction& aResponse ); + + /** + * Called when query has been canceled. + * + * @return aTransaction the transaction, which caused cancelation + * @return EFalse, if not consumed + */ + TBool QueryCanceled( const CSIPClientTransaction& aTransaction ); + + /** + * Query state executing. + * + * @return ETrue if query executing, otherwise EFalse + */ + TBool QueryExecuting(); + + /** + * Called when OPTIONS request has been received + * + * @param aQuery query received + */ + void QueryRequestedL( CSIPServerTransaction& aQuery ); + + /** + * Attach query + * + * @param aQuery a query to be attached + * @return number of attached queries + */ + TInt AttachQuery( CMusAvaCapabilityQueryBase& aQuery ); + + /** + * Removes query + * + * @param aQuery a query to be detached + * @return number of attached queries + */ + TInt DetachQuery( CMusAvaCapabilityQueryBase& aQuery ); + + /** + * Returns ETrue, if terminal is fully discovered + * + * @return ETrue, if terminal is fully discovered + */ + TBool IsDiscovered(); + + +private: // new functions + + void AttachIdL( const TDesC8& aTerminalId ); + void AttachUriL( const TDesC8& aUri ); + void ResetAndDestroyQuery(); + TBool PopulateResponseL( CSIPServerTransaction& aQuery, + RPointerArray& aResponseHeaders, + CSdpDocument& aSdpContent ); + void AddResponseHeadersL( CSIPResponseElements& aResponse, + RPointerArray& aResponseHeaders ); + void AddResponseContentL( CSIPResponseElements& aResponse, + CSdpDocument& aSdpContent ); + + +private: // NOT owned data + + CMusAvaCapabilityExchange& iExchange; + CMusAvaCapability* iRequestedQuery; + +private: // data + + HBufC8* iTerminalId; + HBufC8* iUri; + CMusAvaCapabilityQueryBase* iQuery; + + TInt iQueries; + + MUS_UNITTEST ( UT_CMusAvaTerminal ) + MUS_UNITTEST ( UT_CMusAvaCapabilityExchange ) + MUS_UNITTEST ( UT_CMusAvaCapabilitySipAgent ) + MUS_UNITTEST ( UT_CMusAvaCapabilityQuery ) + }; + + +#endif // CMUSAVATERMINAL_H