diff -r 000000000000 -r f5a58ecadc66 upnp/upnpstack/upnputils/inc/upnptimeoutelement.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnp/upnpstack/upnputils/inc/upnptimeoutelement.h Tue Feb 02 01:12:20 2010 +0200 @@ -0,0 +1,183 @@ +/** @file +* 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: Declares virtual MUpnpTimeoutElementParent callback class +* and the implemented active object class CUpnpTimeoutElement +* +*/ + + +#ifndef C_CUPNPTIMEOUTELEMENT_H +#define C_CUPNPTIMEOUTELEMENT_H + +// INCLUDES +#include +#include + +// FORWARD DECLARATIONS +class CUpnpTimeoutElement; + +// CLASS DECLARATION + +/** +* @brief A virtual parent class. +* +* This interface class is used to receive the timeout callbacks from timeout +* elements. +* +* @since Series60 2.0 +*/ + +class MUpnpTimeoutElementParent + { + public: + + /** + * A virtual function to be implemented in derived classes. + * For example, the implementation might contain deletion of the timeout element. + * @since Series60 2.0 + * @param anElement This pointer contains the element whose timeout has ran out. + * @return None + */ + virtual void TimeoutExpiredL( CUpnpTimeoutElement* anElement ) = 0; + }; + +/** +* @brief An element with timeout +* +* This is a virtual base class containing a timeout functionality. This class +* is used by following steps: +* +* 1. Inherit your class from CUpnpTimeoutElement; +* +* 2. In the constructor of the derived class, call also the constructor of +* CUpnpTimeoutElement. This means you have to have an element library class which +* is derived from the class MUpnpTimeoutElementParent. This element library has to +* be passed to the constructor of CUpnpTimeoutElement. +* +* 3. Call the SetTimeout function to set the timeout of the element +* +* 4. If the timeout should be renewed after a timeout, call SetRenew to set the +* member variable iRenew. That variable can be used later to decide the destiny +* of an element. +* +* @since Series60 2.0 +*/ +class CUpnpTimeoutElement : public CActive + { + private: + static const TUint32 KMicroInSec = 1000000; + static const TInt KTime = 1800; + + protected: // Constructors and destructors + + /** + * Constructor function; call from the constructor of a derived class. + * @since Series60 2.0 + * @param aParent A class implementing the parent interface + * MUpnpTimeoutElementParent, in practice the library class + */ + IMPORT_C CUpnpTimeoutElement( MUpnpTimeoutElementParent& aParent ); + + /** + * Base class constructor function + * @since Series60 2.0 + */ + IMPORT_C void BaseConstructL(); + + public: + + /** + * Destructor function; called automatically from the destructor of a + * derived class + **/ + IMPORT_C virtual ~CUpnpTimeoutElement(); + + /** + * This function sets the timeout of the element. The TimeoutExpired() + * function of the parent of this element is called after the timeout + * @since Series60 2.0 + * @param aSeconds + */ + IMPORT_C void SetTimeout( TInt aSeconds ); + + public: // From CActive + + /** + * Standard callback function of CActive-derived functions + * @since Series60 2.0 + * @return None + */ + IMPORT_C void RunL(); + + /** + * Standard callback function of CActive-derived functions + * @since Series60 2.0 + * @return None + */ + IMPORT_C void DoCancel(); + + /** + * Standard callback function of CActive-derived functions + * @since Series60 2.0 + * @return None + */ + IMPORT_C TInt RunError( TInt aError ); + + public: // New Functions + + // Enumeration for different timeouts: + enum TState { + EAlive, + EDead, + ELongTime + }; + + // Enumeration for different timeouts: + enum TRenew { + // This value is for timeouts that should be renewed after the timeout + ERenew, + // This value is for timeouts that declare the closing of + // an external (device) element; + EOnce, + // This value is for timeouts that declare the closing of an element; + // timeout not renewed anymore. + ERemove + }; + + /** + * Returns the current renew setting + * @since Series60 2.0 + * @return Returns the current renew setting + */ + IMPORT_C TRenew& Renew(); + + /** + * ets the renew setting of this element + * @since Series60 2.0 + * @param aRenew The new renew setting + */ + IMPORT_C void SetRenew( TRenew aRenew ); + + private: + + TRenew iRenew; + TState iState; + RTimer iTimer; + MUpnpTimeoutElementParent& iParent; + TInt iSeconds; + }; + +#endif // C_CUPNPTIMEOUTELEMENT_H + +// End of File \ No newline at end of file