diff -r 000000000000 -r 307788aac0a8 realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrmonitor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/realtimenetprots/sipfw/ProfileAgent/AlrMonitor/inc/sipalrmonitor.h Tue Feb 02 01:03:15 2010 +0200 @@ -0,0 +1,145 @@ +/* +* Copyright (c) 2007-2009 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: +* Name : sipalrmonitor.h +* Part of : SIP / SIP ALR Monitor +* Version : SIP/6.0 +* +*/ + + + + +/** + @internalComponent +*/ + +#ifndef CSIPALRMONITOR_H +#define CSIPALRMONITOR_H + +// INCLUDES +#include "sipalrsnapmonitor.h" +#include +#include + +// FORWARD DECLARATIONS +class MSipAlrObserver; +class CSipSystemStateMonitor; + +// CLASS DECLARATION +/** +* The implementation for SIP ALR monitor. +*/ +class CSipAlrMonitor : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aSystemStateMonitor used for monitoring SNAP availability + * @return a new instance, the ownership is transferred. + */ + static CSipAlrMonitor* NewL( + CSipSystemStateMonitor& aSystemStateMonitor); + + /** + * Destructor. + */ + ~CSipAlrMonitor(); + + public: // New functions + + /** + * Starts to monitor IAP availability for the SNAP. + * The observer will be informed asynchronouysly + * when any IAP is available for the monitored SNAP. + * @param aSnapId SNAP id + * @param aObserver observer to be informed when an IAP becomes available + */ + void MonitorSnapL( TUint32 aSnapId, + MSipAlrObserver& aObserver ); + + + /** + * Refreshes the IAP availability for the SNAP. + * Scans the available IAPs for the SNAP and informs all the observers + * if a better IAP than the current one is available. + * @param aSnapId SNAP id + */ + void RefreshIapAvailabilityL( TUint32 aSnapId ); + + /** + * Allows migration to a new IAP for the SNAP. + * @param aSnapId SNAP id + * @return KErrNone on success, otherwise a system wide error code. + */ + TInt AllowMigration( TUint32 aSnapId ); + + /** + * Disallows migration to a new IAP for the SNAP. + * @param aSnapId SNAP id + * @return KErrNone on success, otherwise a system wide error code. + */ + TInt DisallowMigration( TUint32 aSnapId ); + + /** + * The migration has succeeded and the new IAP has been taken into use. + * @param aSnapId SNAP id + * @return KErrNone on success, otherwise a system wide error code. + */ + TInt NewIapAccepted( TUint32 aSnapId ); + + /** + * The migration has failed and the new IAP was not taken into use. + * @param aSnapId SNAP id + * @return KErrNone on success, otherwise a system wide error code. + */ + TInt NewIapRejected( TUint32 aSnapId ); + + /** + * Frees all the resources reserved for the observer. + * @param aObserver a observer + */ + void FreeResources( MSipAlrObserver& aObserver ); + + + private: // Constructors + + void ConstructL(); + + CSipAlrMonitor(CSipSystemStateMonitor& aSystemStateMonitor); + + private: // New functions + + CSipAlrSnapMonitor* FindSnapMonitor( TUint32 aSnapId ); + + private: // Data + + // Used for monitoring SNAP availability + CSipSystemStateMonitor& iSystemStateMonitor; + + // SNAP monitors, owned + RPointerArray iSnapMonitors; + + // Socket server session + RSocketServ iSocketServer; + + private: // For testing purposes + + #ifdef CPPUNIT_TEST + friend class CSipAlrMonitorTest; + #endif + }; + +#endif // CSIPALRMONITOR_H