diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmceshared/inc/mceevents.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmceshared/inc/mceevents.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,540 @@ +/* +* 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 MCEEVENTS_H +#define MCEEVENTS_H + +#include +#include "mceclientserver.h" + + +class CMceComEndpoint; +class CMceComMediaSink; +class CMceComMediaSource; +class CMceComRtpSink; +class CMceComRtpSource; +class CMceComSpeakerSink; +class CMceComDisplaySink; +class CMceComMicSource; +class CMceComCameraSource; +class CMceComFileSource; +class CMceComFileSink; +class CMceComCodec; +class CMceComMediaStream; + +class CMceSipSession; +class CMceMsgBase; + +const TInt KMceEventConsumed = 0; +const TInt KMceEventNotOwner = -1; +const TInt KMceEventNotConsumed = -2; +const TInt KMceEventUpdate = -3; + +const TUint KMceEventCodeNotAssigned = KMceNotAssigned; + +enum TMceMediaEventCode + { + EMceMediaSessionStopped = 100, + EMceMediaError, + EMceMediaReserved, + EMceMediaUpdated, + EMceMediaEventReceived + }; + +enum TMceSipEventCode + { + EMceRegister = 200, + EMceInvite, + EMceCancel, + EMceAck, + EMceBye, + EMcePrack, + EMceUpdate, + EMceSubscribe, + EMceRefer, + EMceMessage, + EMceInfo, + EMceResponse, + EMceProvisionalResponse, + EMceRedirectionResponse, + EMceErrorResponse, + EMceStandAloneRequest, + EMceStandAloneResponse, + EMceSessionExpired, + EMceSessionRefresh, + EMceSessionPending, + EMceNoPrackReceived, + EMceReliableFailed, + EMceRequest, + EMceServerInitialized + }; + +enum TMceEventSource + { + EMceClient, + EMceSip, + EMceMedia + }; + + +/** + * event class + * + * @lib + */ +class TMceEvent + { +public: + + /** + * Contructor + */ + TMceEvent(); + + /** + * Contructor + * @param aIds ITC ids + * @param aMessage message + * @param aContent content + */ + TMceEvent( TMceIds& aIds, CBase* aMessage, HBufC8* aContent ); + + /** + * returns id + * @return id + */ + TMceIds& Id(); + + /** + * returns action + * @return action + */ + TUint Action(); + + /** + * returns action data + * @return action data + */ + TUint32 ActionData(); + + /** + * returns message type + * @return message type + */ + TUint MessageType(); + + /** + * returns message + * @return message + */ + CBase* Message(); + + /** + * returns content + * @return content + */ + HBufC8* Content(); + +private: + + //ids + TMceIds* iIds; + //message + CBase* iMessage; + //content + HBufC8* iContent; + + }; + + +class MMceEventHandler; + +/** + * com event class + * + * @lib + */ +class TMceComEvent : public TMceEvent + { +public: + + /** + * Contructor + * @param aIds ITC ids + * @param aMessage message + * @param aAction action + * @param aHandler event handler + */ + TMceComEvent( TMceIds& aIds, CBase* aMessage, + TMceItcFunctions aAction, MMceEventHandler& aHandler ); + + /** + * returns action + * @return action + */ + TUint Action(); + + /** + * returns event handler + * @return event handler + */ + MMceEventHandler& Handler(); + + +protected: + + //action + TMceItcFunctions iAction; + //event handler + MMceEventHandler& iHandler; + + }; + + +/** + * mcc event class + * + * @lib + */ +class TMceMccComEvent + { + + +public: + + + /** + * Contructor + * @param aEvent event type + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aEndpointId Sink or source ID + */ + inline TMceMccComEvent( TUint32 aEvent, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aEndpointId = 0 ) + : iEvent( aEvent ), + iLinkId( aLinkId ), + iStreamId( aStreamId ), + iEndpointId( aEndpointId ), + iError( KErrNone ), + iEventSubType( KMceNotAssigned ), + iCodec( NULL ), + iSource( NULL ), + iSink( NULL ), + iStream( NULL ), + iItcEvent( EMceItcNotAssigned ), + iItcData( KMceNotAssigned ), + iItcDataDesC( NULL ) + { + } + + /** + * Contructor + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aEndpointId Sink or source ID + */ + inline TMceMccComEvent( TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aEndpointId = 0 ) + : iEvent( KMceNotAssigned ), + iLinkId( aLinkId ), + iStreamId( aStreamId ), + iEndpointId( aEndpointId ), + iError( KErrNone ), + iEventSubType( KMceNotAssigned ), + iCodec( NULL ), + iSource( NULL ), + iSink( NULL ), + iStream( NULL ), + iItcEvent( EMceItcNotAssigned ), + iItcData( KMceNotAssigned ), + iItcDataDesC( NULL ) + { + } + + /** + * Contructor + * @param aEvent event type + */ + inline TMceMccComEvent( TUint32 aEvent ) + : iEvent( aEvent ), + iLinkId( KMceNotAssigned ), + iStreamId( KMceNotAssigned ), + iEndpointId( KMceNotAssigned ), + iError( KErrNone ), + iEventSubType( KMceNotAssigned ), + iCodec( NULL ), + iSource( NULL ), + iSink( NULL ), + iStream( NULL ), + iItcEvent( EMceItcNotAssigned ), + iItcData( KMceNotAssigned ), + iItcDataDesC( NULL ) + { + } + + +public://mcc/mce data + + + TUint32 iEvent; + TUint32 iLinkId; + TUint32 iStreamId; + TUint32 iEndpointId; + TInt iError; + TUint32 iEventSubType; + CMceComCodec* iCodec; + CMceComEndpoint* iSource; + CMceComEndpoint* iSink; + + inline void SetDataDesC( const TDesC8& aData ) + { + iItcDataDesC = &aData; + } + +public://mce/itc data + + CMceComMediaStream* iStream; + TMceItcCallBack iItcEvent; + TUint32 iItcData; + const TDesC8* iItcDataDesC; + + }; + + + +/** + * event handler interface + * + * @lib + */ +class MMceEventHandler + { +public: + + /** + * Handles event for sink + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComMediaSink& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for source + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComMediaSource& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for rtp sink + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComRtpSink& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for rtp source + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComRtpSource& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for speaker sink + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComSpeakerSink& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for display sink + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComDisplaySink& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for mic source + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComMicSource& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for camera source + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComCameraSource& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for file source + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComFileSource& aTarget, TMceComEvent& aEvent ) = 0; + + /** + * Handles event for file sink + * @param aTarget target + * @param aEvent event + */ + virtual TInt HandleL( CMceComFileSink& aTarget, TMceComEvent& aEvent ) = 0; + + }; + + + +/** + * empty event handler + * + * @lib + */ +class TMceComEmptyEventHandler : public MMceEventHandler + { + +public: + + inline TInt HandleL( CMceComMediaSink& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComMediaSource& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComRtpSink& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComRtpSource& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComSpeakerSink& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComDisplaySink& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComMicSource& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComCameraSource& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComFileSource& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + inline TInt HandleL( CMceComFileSink& /*aTarget*/, TMceComEvent& /*aEvent*/ ) + { + User::Leave( KErrNotSupported ); + return KErrNotSupported; + } + }; + + + +/** + * transition event + * + * @lib + */ +class TMceStateTransitionEvent + { +public: + + + TMceStateTransitionEvent( CMceSipSession& aSession, TMceSipEventCode aCode ); + + TMceStateTransitionEvent( CMceSipSession& aSession, TMceSipEventCode aCode, + CSIPDialog& aDialog ); + + TMceStateTransitionEvent( CMceSipSession& aSession, TMceSipEventCode aCode, + TInt aStatus ); + + TMceStateTransitionEvent( CMceSipSession& aSession, TMceItcFunctions aCode, + TMceIds& aIds, CMceMsgBase& aClientMessage ); + + TMceStateTransitionEvent( CMceSipSession& aSession, TMceItcFunctions aCode, + TMceIds& aIds ); + + //updated & reserved & session closed + TMceStateTransitionEvent( CMceSipSession& aSession, TMceMediaEventCode aCode ); + + //media error + TMceStateTransitionEvent( CMceSipSession& aSession, + TMceMccComEvent& aEvent, + TMceMediaEventCode aCode ); + + //empty event + TMceStateTransitionEvent(); + + CMceSipSession& Session(); + TMceEventSource EventSource(); + TUint& Code(); + + TMceIds& ParamIDs(); + CMceMsgBase& ParamClientMessage(); + TMceMccComEvent* ParamMccEvent(); + TInt& ParamStatus(); + + // Ownership of Dialog is not Transfered + CSIPDialog* Dialog(); + + void SetParamIDs( TMceIds& aIds ); + void SetParamClientMessage( CMceMsgBase* aMsg ); + +private: + + CMceSipSession* iSession; + TUint iCode; + TMceEventSource iEventSource; + TMceIds* iIds; + CMceMsgBase* iClientMessage; + TMceMccComEvent* iMccEvent; + TInt iStatus; + CSIPDialog* iDialog; + }; + + +#endif // MCECLIENTSERVER_H + +// End of File