diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccqoscontroller/inc/mccqoscontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccqoscontroller/inc/mccqoscontroller.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,183 @@ +/* +* Copyright (c) 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: +* +*/ + + + + +#ifndef MCCQOSCONTROLLER_H +#define MCCQOSCONTROLLER_H + +// INCLUDES +#include +#include "mccrateadaptationdef.h" +#include "mccinternalevents.h" +#include "mmccevents.h" + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class MMccRateAdaptationObserver; +class MMccResources; +class TMccEvent; +class CDeltaTimer; +class MDataSink; +class MDataSource; + +// CLASS DECLARATION + +class TMccQosControllerIcmpError + { + public: + + TMccQosControllerIcmpError() : + iLinkId( 0 ), + iErrorTimeWindowBeginning( 0 ), + iErrorCount( 0 ) + { + } + + public: + + TUint32 iLinkId; + TTime iErrorTimeWindowBeginning; + TInt iErrorCount; + }; + +/** +* +*/ +class CMccQosController : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CMccQosController* NewL( MMccRateAdaptationObserver& aObserver, + MMccResources& aResources ); + + /** + * Destructor. + */ + IMPORT_C ~CMccQosController(); + + public: // New functions + + /** + * Processes event if it is qos related. + * @param aEvent + * @return ETrue if event should be ignored, otherwise EFalse + */ + IMPORT_C TBool EventReceived( const TMccEvent& aEvent ); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + private: + + /** + * C++ default constructor. + */ + CMccQosController( MMccRateAdaptationObserver& aObserver, + MMccResources& aResources ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + void DoAdaptationCalculations(); + void FillRateAdaptationEvent(); + void ClearRateEventData(); + + /** + *Starts timer of type CDeltaTimer, + *which callback is AsyncTimerExpired function + */ + void StartTimerForAsync(); + + /** + * A callback for CDeltaTimer + */ + static TInt AsyncTimerExpired(TAny* aPtr); + + void GetSinkSources(); + + void CheckRateChangeResult(TInt aValue); + + TBool HandleIcmpError( const TMccEvent& aEvent ); + + static TBool IcmpErrorMatch( const TMccQosControllerIcmpError& aError1, + const TMccQosControllerIcmpError& aError2 ); + + static TBool IcmpErrorCleanup( const TMccQosControllerIcmpError& aError1, + const TMccQosControllerIcmpError& aError2 ); + + void DoAdaptation(); + + TInt GetShortTermComparisonDelay(); + + TInt CalculateDelayOfShortTermPeriod(); + + public: // Data + + protected: // Data + + private: // Data + + MMccRateAdaptationObserver& iMainObserver; + MMccResources& iResources; + TInt iRoundTripTime; + TRtpPeerStat iStreamStat; + TMccRateAdaptationEventData iRateEventData; + TMccEvent iEvent; + TMccEvent iResultEvent; + TThresholdValues iThresholdValues; //rate control threshold values + CDeltaTimer* iDeltaTimer; + TCallBack iDeltaTimerCallBack; + TDeltaTimerEntry iDeltaTimerEntry; + + TBool iBitRateChanged; + TUint iEventCounter; + TBool iAdapted; + TInt iRoundTripDelayOfPreviousShortPeriod; + TInt iRoundTripDelays[ KMccShortTermCalculation ]; + RArray iIcmpErrors; + + public: // Friend classes + + protected: // Friend classes + + private: // Friend classes + + #ifdef TEST_EUNIT + friend class UT_CMccQosController; + #endif + + }; + +#endif // MCCQOSCONTROLLER_H + +// End of File