mmsharing/mmshavailability/inc/musavaterminal.h
changeset 0 f0cf47e981f9
--- /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