diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmceshared/inc/mcecomendpoint.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmceshared/inc/mcecomendpoint.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,372 @@ +/* +* Copyright (c) 2005 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 CMCECOMENDPOINT_H +#define CMCECOMENDPOINT_H + +#include "mcecomserializable.h" + +#ifdef MCE_COMMON_SERVER_SIDE +class TMceMccComEvent; +#endif//MCE_COMMON_SERVER_SIDE + +class TMceComFactory; +class TMceComEvent; +class CMceComMediaStream; +class CMceComCodec; +class MMceComEndPointProxy; +class CMceItcSender; +class RMce; + +const TBool KMceEnabledLocal = ETrue; +const TBool KMceEnabledE2e = EFalse; + +typedef TUint8 TMceEndpointCategory; + +/** + * + * + * @lib + */ +class CMceComEndpoint: public CBase, + public MMceComSerializable + { + +public: // Destructor + + ~CMceComEndpoint(); + + +public: // from MMceComSerializableMedia + + + /** + * Returns serialization id + * @return serialization id + */ + TUint64 SerializationId() const; + + /** + * Internalizes flat data + * @param aReadStream read stream + */ + void InternalizeFlatL( RReadStream& aReadStream ); + + /** + * Externalizes flat data + * @param aWriteStream write stream + */ + void ExternalizeFlatL( RWriteStream& aWriteStream ); + + /** + * Internalizes + * @param aSerCtx context for serialization + */ + void InternalizeL( MMceComSerializationContext& aSerCtx ); + + /** + * Externalizes + * @param aSerCtx context for serialization + */ + void ExternalizeL( MMceComSerializationContext& aSerCtx ); + + +public: // new functions + + /** + * Return category of endpoint. + * @return category of endpoint + */ + TMceEndpointCategory Category() const; + + /** + * Returns type of endpoint. NOTE, sources and sinks have currently + * overlapping type values so type value checking is not safe without + * knowing endpoint category. TBD: remove overlapping from API + * @return type of endpoint + */ + TUint8 Type() const; + + /** + * ID + * @return ID + */ + TMceMediaId Id() const; + + /** + * Factory + * @return factory + */ + TMceComFactory BaseFactory(); + + /** + * Sets and gets reference count describing to how many + * streams sink is associated + * @return reference count reference + */ + TInt& ReferenceCount(); + + /** + * Parent object + * @return Parent object + */ + CMceComMediaStream* MediaStream() const; + + /** + * equal operator + * @param aEndpoint the enpoint + * @return ETrue, if equal + */ + TBool operator==( const CMceComEndpoint& aEndpoint ) const; + + /** + * Stream is been deleted + * @param aParent the parent stream + */ + void UnInitialize( CMceComMediaStream& aParent ); + + +public: // virtual functions + + + /** + * Returns ETrue, if enabled + * @param aLocally, if KMceEnabledLocal means locally enabled, + * KMceEnabledE2e means that local and remote + * endpoints are enabled. + * @return ETrue, if enabled + */ + virtual TBool IsEnabled( TBool aLocally = KMceEnabledLocal ) const; + + /** + * Sets enabled flag + * @param aValue enabled/disabled + */ + void Enabled( TBool aValue ); + + /** + * Traversal event handler + * @param aEvent the event + * @return status, if event was consumed or not or object needs update + */ + virtual TInt EventReceivedL( TMceComEvent& aEvent ) = 0; + + /** + * Initializes + * @param aParent the parent + */ + virtual void InitializeL( CMceComMediaStream& aParent ); + + /** + * Stream has been added to session + * @param aParent the parent stream + */ + virtual void StreamAddedL( CMceComMediaStream& aParent ); + + /** + * Returns endpoint proxy + * @return endpoint proxy + */ + MMceComEndPointProxy* EndpointProxy() const; + + /** + * Called when stream bundle has beed added to prepare proxy for it + * @param aEndpointProxy endpoint proxy setup by another endpoint or NULL + */ + void SetupEndpointProxyL( MMceComEndPointProxy* aEndpointProxy ); + + /** + * Called endpoint proxy must be created + * @return endpointProxy + */ + virtual MMceComEndPointProxy* CreateEndpointProxyL() const; + + /** + * Should this endpoint use endpoint proxy + * @return ETrue, this endpoint uses endpoint proxy + */ + virtual TBool UsesEndpointProxy() const; + + /** + * Is this endpoint re-usable + * @return ETrue, if this endpoint is re-usable + */ + virtual TBool Reusable( const CMceComMediaStream& aParent ) const; + /** + * Should use RTCP + * return ETrue, if uses RTCP + */ + virtual TBool UseRTCP(); + + +#ifdef MCE_COMMON_SERVER_SIDE + + +public: //virtual functions + + /** + * Returns mcc type for mcc endpoint + * @return mcc type + */ + virtual const TUid MccType() = 0; + + /** + * Returns init param for mcc endpoint + * @return mcc type + */ + virtual const TDesC8& InitParamL( const CMceComCodec& aCodec); + + /** + * Endpoint can be informed about initialization completion + */ + virtual void InitializedL(); + + /** + * Enables 'locally' this endpoint + * @param aCodec the codec associated to this endpoint + */ + virtual void EnableL( const CMceComCodec& aCodec ); + + /** + * Disables 'locally' this endpoint + */ + virtual void DisableL(); + + /** + * Prepares this endpoint + */ + virtual void PrepareL(); + + /** + * Called after endpoint has been prepared. + * @return error code + */ + virtual TInt DoPrepared(); + + +public: //new functions + + /** + * Handles event received from mcc + * @param aEvent the event from mcc + */ + void EventReceived( TMceMccComEvent& aEvent ); + + /** + * Sets state + * @param aEvent the event from mcc + */ + void SetState( TMceMccComEvent& aEvent ); + + void Merge( CMceComEndpoint& aMergeWith ); + +#else // MCE CLIENT SIDE + + /** + * Gets itc sender. + * @param aItcProvider + */ + CMceItcSender& SenderL( RMce& aItcProvider ); +#endif//MCE_COMMON_SERVER_SIDE + + +protected: + + /** + * Updates + * @param aEndpoint an endpoint + */ + void BaseUpdateL( CMceComEndpoint& aEndpoint ); + + /** + * Zeroes instance (used in cloning) + */ + void Zero(); + + +protected: + + /** + * C++ default constructor. + * @param aType + */ + CMceComEndpoint( TMceEndpointCategory aCategory, TUint8 aType ); + + +public://serialized data + + /** + * category of endpoint + */ + TMceEndpointCategory iCategory; + + /** + * type of endpoint + */ + TUint8 iType; + + /** + * ID + */ + TMceMediaId iID; + + /** + * reference count + */ + TInt iReferenceCount; + + + +protected://owned + + /** + * proxy + */ + MMceComEndPointProxy* iEndpointProxy; + + /** + * Is enabled + */ + TBool iIsEnabled; + + /** + * Itc sender used by client when endpoint is not attached to session. + */ + CMceItcSender* iItcSender; + +private://NOT owned + + + /** + * Parent stream (one of) + */ + CMceComMediaStream* iStream; + + /** + * Parent streams + */ + RPointerArray iParents; + + //definitions for unit testing + friend class UT_CMceSrvSource; + }; + + +#endif // CMCECOMENDPOINT_H