diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccsubcontroller/inc/mccrtpkeepalivecontainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccsubcontroller/inc/mccrtpkeepalivecontainer.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,203 @@ +/* +* Copyright (c) 2002-2008 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: RTP Keepalive mechanism +* +*/ + + + + +#ifndef MCCRTPKEEPALIVECONTAINER_H +#define MCCRTPKEEPALIVECONTAINER_H + +// INCLUDES +#include +#include "rtpdef.h" +#include "rtpapi.h" +#include "rtpheader.h" + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class MAsyncEventHandler; +class MMccResources; +class MMccRtpInterface; +class CMccRtpKeepalive; +class TMccCodecInfo; +class CMccRtpMediaClock; + +// CLASS DECLARATION + +class MMccRtpKeepalive + { + public: + + /** + * Start sending keepalive packets. + * + * @since Series 60 3.2 + * @param aUser rtp interface instance + * @param aCodecInfo codec info instance + * @param aRtpMediaClock rtp media clock instance + * @return void + */ + virtual void StartKeepaliveL( MMccRtpInterface& aUser, + TMccCodecInfo& aCodecInfo, + CMccRtpMediaClock& aRtpMediaClock ) = 0; + + /** + * Stop sending keepalive packets. + * + * @since Series 60 3.2 + * @param aUser rtp interface instance + * @return One of the standard system-wide error codes. + */ + virtual TInt StopKeepalive( MMccRtpInterface& aUser, + const TMccCodecInfo& aCodecInfo ) = 0; + + /** + * Reset keepalive timer. + * + * @since Series 60 3.2 + * @param None + * @return void + */ + virtual void ResetKeepaliveTimer() = 0; + + /** + * Update session keepalive parameters + * + * @since Series 60 3.2 + * @param aUser rtp interface instance + * @param aCodecInfo codec info instance + * @return void + */ + virtual void UpdateParamsL( MMccRtpInterface& aUser, + const TMccCodecInfo& aCodecInfo ) = 0; + }; + +NONSHARABLE_CLASS( CMccRtpKeepaliveContainer ) : public CBase, + public MMccRtpKeepalive + { + public: + + /** + * Two-phased constructor. + */ + static CMccRtpKeepaliveContainer* NewL( + MAsyncEventHandler& aEventHandler, + CRtpAPI& aRtpAPI, + TRtpId aRtpSessionId ); + + /** + * Destructor + */ + virtual ~CMccRtpKeepaliveContainer(); + + public: // From MMccRtpKeepalive + + /** + * Start sending keepalive packets. + * + * @since Series 60 3.2 + * @param aUser rtp interface instance + * @param aCodecInfo codec info instance + * @param aRtpMediaClock rtp media clock instance + * @return void + */ + virtual void StartKeepaliveL( MMccRtpInterface& aUser, + TMccCodecInfo& aCodecInfo, + CMccRtpMediaClock& aRtpMediaClock ); + + /** + * Stop sending keepalive packets. + * + * @since Series 60 3.2 + * @param aUser rtp interface instance + * @return One of the standard system-wide error codes. + */ + virtual TInt StopKeepalive( MMccRtpInterface& aUser, + const TMccCodecInfo& aCodecInfo ); + /** + * Reset keepalive timer. + * + * @since Series 60 3.2 + * @return void + */ + virtual void ResetKeepaliveTimer(); + + /** + * Update session keepalive parameters + * + * @since Series 60 3.2 + * @param aUser rtp interface instance + * @param aConfig Configuration + * @return void + */ + virtual void UpdateParamsL( MMccRtpInterface& aUser, + const TMccCodecInfo& aConfig ); + + public: // Functions + + void StopAll(); + + TInt RemoteAddressSet(); + + private: + + CMccRtpKeepalive* FindKeepaliveHandler( TUint8 aKeepAlivePT, + MMccRtpInterface& aUser ); + + private: // Constructors + + CMccRtpKeepaliveContainer( MAsyncEventHandler& aEventHandler, + CRtpAPI& aRtpAPI, + TRtpId aRtpSessionId ); + + + private: // Data + + MAsyncEventHandler& iEventHandler; + + CRtpAPI& iRtpAPI; + + TRtpId iRtpSessionId; + + RPointerArray iKeepaliveHandlers; + + TBool iStopped; + + /** + * Boolen indicating if rtp sink exists. + */ + TBool iRtpSinkExist; + + TBool iRemoteAddressSet; + + #ifdef TEST_EUNIT + friend class UT_CMccRtpKeepalive; + friend class UT_CMccRtpDataSink; + friend class UT_CMccRtpDataSource; + #endif + }; + +#endif // MCCRTPKEEPALIVECONTAINER_H + +// End of File