mmsharing/mmshavailability/inc/musavacapabilitysipagent.h
changeset 0 f0cf47e981f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshavailability/inc/musavacapabilitysipagent.h	Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,169 @@
+/*
+* 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:  SIP event handling class
+*
+*/
+
+
+#ifndef CMUSAVACAPABILITYSIPAGENT_H
+#define CMUSAVACAPABILITYSIPAGENT_H
+
+
+#include <e32base.h>    // CBase
+#include "musunittesting.h"
+#include "musavasipadapter.h"
+#include "musavasipconnectionadapter.h"
+#include "musavaavailabilityobserver.h"
+
+
+class CMusAvaSharedObject;
+class CSIPConnection;
+class CSIPDialog;
+class CSIPProfile;
+class CSIPProfileRegistry;
+class CSIPServerTransaction;
+class CMusAvaCapabilityExchange;
+class CMusAvaCapability;
+
+/**
+ * SIP event handling class
+ *
+ * @lib AlwaysOnlineSwisPlugin.dll
+ */
+class CMusAvaCapabilitySipAgent : 
+    public CBase,
+    public MMusAvaSipAdapter, 
+    public MMusAvaSipConnectionAdapter
+    {
+
+private:
+
+    /** SIP connection state */
+
+    enum TSipConnectionState
+        {
+        /** Connection state unknown */
+        ESipConnUnknown = 0,
+        /** Connection initializing */
+        ESipConnInit,
+        /** Connection active */
+        ESipConnActive,
+        /** Connection suspended */
+        ESipConnSuspended,
+        /** Connection is inactive */
+        ESipConnInactive,
+        /** Connection is permanently unavailable */
+        ESipConnUnavailable
+        };
+
+
+public: // constructors and destructor
+
+    static CMusAvaCapabilitySipAgent* NewL( 
+        CMusAvaCapabilityExchange& aCapabilityExchange, 
+        CMusAvaSharedObject& aSharedObject,
+        MMusAvaAvailabilityObserver& aAvaObserver );
+
+    virtual ~CMusAvaCapabilitySipAgent();
+
+
+private: // constructors
+
+    CMusAvaCapabilitySipAgent( CMusAvaCapabilityExchange& aCapabilityExchange,
+                            CMusAvaSharedObject& aSharedObject,
+                            MMusAvaAvailabilityObserver& aAvaObserver );
+
+
+public: // new functions
+
+    /**
+     * Executes capability query
+     *
+     *@param aCapability capability to query
+     *@param aSipAddress remote part address
+     */
+    void ExecuteCapabilityQueryL( CMusAvaCapability& aCapability,
+                                const TDesC& aSipAddress );
+
+
+public: // functions from base class MSIPObserver
+
+    /**
+    * A SIP request has been received from the network.
+    * This function is called when the SIP request was received using such
+    * an IAP, for which the application has not created a CSIPConnection
+    * object.
+    * @pre aTransaction != 0
+    * @param aIapId The IapId from which the SIP request was received.
+    * @param aTransaction contains local address, remote address of a SIP
+    *        message, as well as optional SIP message method, headers and
+    *        body. The ownership is transferred.
+    */
+    TInt IncomingRequest( TUint32 aIapId,
+                          CSIPServerTransaction* aTransaction );
+
+    /**
+    * The received SIP request time-outed and it has been destroyed.
+    * This will be called if the user fails to create a SIP
+    * connection and does not send an appropriate SIP response.
+    * @param aTransaction The time-outed transaction.
+    */
+    TInt TimedOut( CSIPServerTransaction& /* aTransaction */ );
+
+
+public: // functions from base class MMusAvaSipConnectionAdapter
+
+    /**
+    * A SIP request outside a dialog has been received from the
+    * network.
+    */
+    TInt IncomingRequest( CSIPServerTransaction* aTransaction );
+
+	/**
+    * A SIP response received from the network.
+	*
+	* @param aTransaction contains response elements.
+	*/
+	TInt IncomingResponse (CSIPClientTransaction& aTransaction);
+
+	/**
+	* An asynchronous error has occurred in the stack related to the
+	* request indicated by the given transaction.
+	*
+	* @param aError system wide or SIP error code
+	* @param aTransaction failed transaction
+	* @param aSIPConnection a SIP connection        
+	*/
+	TInt ErrorOccured (TInt aError, CSIPTransactionBase& aTransaction );
+
+private:
+    /**
+    * Handle incoming SIP request
+    * @param aTransaction incoming transaction
+    */
+    void HandleIncomingRequestL( CSIPServerTransaction& aTransaction );
+
+private: // data
+
+    CSIPConnection*          iSipConnection;
+    CMusAvaCapabilityExchange& iCapabilityExchange;
+    CMusAvaSharedObject&     iSharedObj;
+    MMusAvaAvailabilityObserver& iAvailabilityObserver;
+    
+    MUS_UNITTEST ( UT_CMusAvaCapabilitySipAgent )
+
+    };
+
+
+#endif // CMUSAVACAPABILITYSIPAGENT_H