multimediacommsengine/mmcecli/src/mceeventmanagerreceiver.cpp
changeset 0 1bce908db942
equal deleted inserted replaced
-1:000000000000 0:1bce908db942
       
     1 /*
       
     2 * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 #include "mceineventobserver.h"
       
    22 #include "mceinreferobserver.h"
       
    23 #include "mcemanager.h"
       
    24 #include "mceinevent.h" 
       
    25 #include "mceinrefer.h"
       
    26 #include "mcetransactiondatacontainer.h"
       
    27 #include "mceserial.h"
       
    28 #include "mceeventmanagerreceiver.h"
       
    29 #include "mce.h"
       
    30 #include "mceclilogs.h"
       
    31 
       
    32 // -----------------------------------------------------------------------------
       
    33 // CMceEventManagerReceiver::CMceEventManagerReceiver
       
    34 // -----------------------------------------------------------------------------
       
    35 //
       
    36 CMceEventManagerReceiver::CMceEventManagerReceiver( RMce& aMce,
       
    37                                                     CMceManager& aManager)
       
    38                                           
       
    39  : CMceItcReceiverBase ( aMce ),
       
    40    iManager( aManager )
       
    41 	{
       
    42 	iIdsPckg().iAppUID = aManager.AppUid().iUid;
       
    43 	iIdsPckg().iManagerType = KMceCSSIPEvent;
       
    44 	Init();
       
    45 	}
       
    46 
       
    47 // -----------------------------------------------------------------------------
       
    48 // CMceEventManagerReceiver::~CMceEventManagerReceiver
       
    49 // -----------------------------------------------------------------------------
       
    50 //
       
    51 CMceEventManagerReceiver::~CMceEventManagerReceiver () 
       
    52 	{
       
    53 	}
       
    54 
       
    55 // -----------------------------------------------------------------------------
       
    56 // CMceEventManagerReceiver::IncomingEventL
       
    57 // -----------------------------------------------------------------------------
       
    58 //
       
    59 void CMceEventManagerReceiver::IncomingEventL( TMceItcCallBack aEvent, 
       
    60                                                TMceIds& aIds, 
       
    61                                                const TDesC8& aContext )
       
    62 	{
       
    63     MCECLI_DEBUG("CMceEventManagerReceiver::IncomingEventL, Entry");
       
    64     MCECLI_DEBUG_DVALUE("context size", aContext.Length() );
       
    65 	
       
    66 	__ASSERT_ALWAYS( aEvent == EMceItcObjectAdded, 
       
    67 	    User::Leave( KErrNotSupported ) );
       
    68 	__ASSERT_ALWAYS( aIds.iMsgType == EMceItcMsgTypeEvent, 
       
    69 	    User::Leave( KErrNotSupported ) );
       
    70     
       
    71     HandleIncomingEventL( aContext, NULL, aIds );
       
    72 	
       
    73     MCECLI_DEBUG("CMceEventManagerReceiver::IncomingEventL, Exit");
       
    74 	}
       
    75 
       
    76 	
       
    77 // -----------------------------------------------------------------------------
       
    78 // CMceEventManagerReceiver::IncomingEventL
       
    79 // -----------------------------------------------------------------------------
       
    80 //
       
    81 void CMceEventManagerReceiver::IncomingEventL( TMceItcCallBack aEvent, 
       
    82                                                TMceIds& aIds, 
       
    83                                                const TDesC8& aContext, 
       
    84                                                HBufC8* aContent )
       
    85 	{
       
    86     MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, Entry");
       
    87     MCECLI_DEBUG_DVALUE("context size", aContext.Length() );
       
    88     MCECLI_DEBUG_DVALUE("content size", aContent ? aContent->Length() : 0 );
       
    89 
       
    90 	__ASSERT_ALWAYS( aEvent == EMceItcObjectAdded, 
       
    91 	    User::Leave( KErrNotSupported ) );
       
    92 	__ASSERT_ALWAYS( aIds.iMsgType == EMceItcMsgTypeEvent, 
       
    93 	    User::Leave( KErrNotSupported ) );
       
    94     
       
    95     HandleIncomingEventL( aContext, aContent, aIds );
       
    96 
       
    97     MCECLI_DEBUG("CMceEventManagerReceiver::IncomingEventL, Exit");
       
    98 	
       
    99 	}
       
   100 	
       
   101 // -----------------------------------------------------------------------------
       
   102 // CMceEventManagerReceiver::IncomingEventL
       
   103 // -----------------------------------------------------------------------------
       
   104 //
       
   105 void CMceEventManagerReceiver::IncomingEventL( TMceItcCallBack /*aEvent*/, 
       
   106                                                TMceIds& /*aIds*/ )
       
   107 	{
       
   108     MCECLI_DEBUG("CMceManagerReceiver::IncomingEventL, NotSupported!");
       
   109 	
       
   110 	User::Leave( KErrNotSupported );
       
   111 	}
       
   112 
       
   113 
       
   114 // -----------------------------------------------------------------------------
       
   115 // CMceEventManagerReceiver::ErrorOccuredL
       
   116 // -----------------------------------------------------------------------------
       
   117 //
       
   118 void CMceEventManagerReceiver::ErrorOccuredL ( TMceIds& /*aIds*/, TInt aError )
       
   119 	{
       
   120     MCECLI_DEBUG_DVALUE("CMceEventManagerReceiver::ErrorOccuredL, error", aError );
       
   121 	
       
   122 	User::Leave( aError );
       
   123 	}
       
   124 
       
   125 
       
   126 // -----------------------------------------------------------------------------
       
   127 // CMceEventManagerReceiver::HandleIncomingEventL
       
   128 // -----------------------------------------------------------------------------
       
   129 //
       
   130 void CMceEventManagerReceiver::HandleIncomingEventL ( const TDesC8& aContext, 
       
   131                                                       HBufC8* aContent,
       
   132                                                       TMceIds& aIds )
       
   133 	{
       
   134     MCECLI_DEBUG("CMceEventManagerReceiver::HandleIncomingEventL, Entry");
       
   135 	     
       
   136 	// create and decode message
       
   137 	CMceMsgSIPEvent* eventMsg = new(ELeave) CMceMsgSIPEvent();
       
   138 	CleanupStack::PushL( eventMsg );
       
   139 	eventMsg->DecodeL( aContext );
       
   140 	eventMsg->PushL();
       
   141         
       
   142     TMceTransactionDataContainer* container = iManager.TransactionContainer();
       
   143     
       
   144     if ( eventMsg->EventType() == EMceItcEventTypeSubscribe )
       
   145         {
       
   146         MCECLI_DEBUG("CMceEventManagerReceiver::HandleIncomingEventL, \
       
   147 creating new in-event");
       
   148         
       
   149         CMceInEvent* event = CMceInEvent::NewL( iManager, 
       
   150                                             aIds.iProfileID, 
       
   151                                             *eventMsg );
       
   152         if ( iManager.InEventObserver() )
       
   153             {
       
   154             if ( container )
       
   155                 {
       
   156                 container->SetHeaders( eventMsg->SIPHeaders() );
       
   157                 container->SetContentType( eventMsg->ContentType() );
       
   158                 container->SetContent( aContent ); 
       
   159                 eventMsg->Pop();
       
   160 	            } 
       
   161 	        else
       
   162 	            {
       
   163 	            delete aContent;
       
   164 	            }
       
   165 	        iManager.InEventObserver()->IncomingEvent( event, container );
       
   166             }
       
   167         else
       
   168             {
       
   169             CleanupStack::PushL( event );
       
   170             event->RejectL();
       
   171             CleanupStack::PopAndDestroy( event );
       
   172             delete aContent;
       
   173             }
       
   174         }
       
   175     else if ( eventMsg->EventType() == EMceItcEventTypeRefer ) 
       
   176         {
       
   177         CMceInEvent* event = NULL;
       
   178         if ( eventMsg->ReferType() == CMceRefer::ENoSuppression )
       
   179             {            
       
   180             MCECLI_DEBUG("CMceEventManagerReceiver::HandleIncomingEventL, \
       
   181 no suppression. creating new in-event");
       
   182             event = CMceInEvent::NewL( iManager, aIds.iProfileID, *eventMsg );
       
   183             }
       
   184             
       
   185         CleanupStack::PushL( event );
       
   186 	    CMceMsgSIPEvent* referMsg = new(ELeave) CMceMsgSIPEvent();
       
   187 	    CleanupStack::PushL( referMsg );
       
   188 	    referMsg->DecodeL( aContext );
       
   189 	    referMsg->PushL();
       
   190             MCECLI_DEBUG("CMceEventManagerReceiver::HandleIncomingEventL, \
       
   191 creating new in-refer-event");
       
   192 	    CMceInRefer* refer = CMceInRefer::NewL( iManager, 
       
   193                                                 aIds.iProfileID, 
       
   194                                                 *referMsg,
       
   195                                                 event );
       
   196 	    
       
   197 	    CleanupStack::Pop( referMsg );
       
   198 	    CleanupStack::Pop( event ); // Ownership was transferred to refer
       
   199 	    CleanupStack::PushL( referMsg );
       
   200 	    
       
   201 	    if ( iManager.InReferObserver() )
       
   202             {
       
   203             if ( container )
       
   204                 {
       
   205                 container->SetHeaders( referMsg->SIPHeaders() );
       
   206                 container->SetContentType( referMsg->ContentType() );
       
   207                 container->SetContent( aContent );
       
   208                 referMsg->Pop();                                    
       
   209 	            } 
       
   210 	        else
       
   211 	            {
       
   212 	            delete aContent;
       
   213 	            }
       
   214             iManager.InReferObserver()->IncomingRefer( 
       
   215                                        refer,
       
   216 					                   refer->ReferTo(),
       
   217 					                   container ); 
       
   218 		    CleanupStack::PopAndDestroy( referMsg ); 
       
   219             }
       
   220         else
       
   221             {
       
   222             CleanupStack::PushL( refer );
       
   223             refer->RejectL();
       
   224             CleanupStack::PopAndDestroy( refer );
       
   225             CleanupStack::PopAndDestroy( referMsg );
       
   226             delete aContent;
       
   227             }   
       
   228         }
       
   229     else
       
   230         {
       
   231         MCECLI_DEBUG("CMceEventManagerReceiver::HandleIncomingEventL, \
       
   232 not supported");
       
   233         User::Leave( KErrNotSupported );
       
   234         }
       
   235     
       
   236     CleanupStack::PopAndDestroy( eventMsg );
       
   237 	
       
   238     if ( container )
       
   239     	{
       
   240     	container->Clear();
       
   241     	}
       
   242 	}
       
   243 
       
   244