--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/inc/musavaterminal.h Thu Dec 17 08:44:37 2009 +0200
@@ -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 <e32base.h> // 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<CSIPHeaderBase>& aResponseHeaders,
+ CSdpDocument& aSdpContent );
+ void AddResponseHeadersL( CSIPResponseElements& aResponse,
+ RPointerArray<CSIPHeaderBase>& 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