multimediacommsengine/mmceshared/inc/mceevents.h
changeset 0 1bce908db942
--- /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 <sipdialog.h>
+#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