diff -r 000000000000 -r f0cf47e981f9 mmsharing/mmshavailability/inc/musavacapabilitysipagent.h --- /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 // 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