telephonyserverplugins/common_tsy/commontsy/src/mmcustomtsy/CMmCustomTsy.cpp
branchRCL_3
changeset 16 fe8b59ab9fa0
parent 15 fc69e1e37771
child 21 2492a6e4aed7
equal deleted inserted replaced
15:fc69e1e37771 16:fe8b59ab9fa0
    38 #include "ctsyprivatecrpkeys.h"
    38 #include "ctsyprivatecrpkeys.h"
    39 #include <featureuids.h>
    39 #include <featureuids.h>
    40 
    40 
    41 // ======== MEMBER FUNCTIONS ========
    41 // ======== MEMBER FUNCTIONS ========
    42 
    42 
    43 CMmCustomTsy::CMmCustomTsy()
    43 CMmCustomTsy::CMmCustomTsy():
       
    44     iReqHandleType(ECustomTsyReqHandleUnknown)
    44     {
    45     {
    45     iMmPhoneTsy = NULL;
    46     iMmPhoneTsy = NULL;
    46     iMmCustomExtInterface = NULL;
    47     iMmCustomExtInterface = NULL;
    47     Mem::FillZ( iMmSubTsy, sizeof( iMmSubTsy ) );
    48     Mem::FillZ( iMmSubTsy, sizeof( iMmSubTsy ) );
    48 
    49 
   194     const TInt aIpc,
   195     const TInt aIpc,
   195     const TDataPackage& aPackage )
   196     const TDataPackage& aPackage )
   196     {
   197     {
   197     TInt ret = KErrNone;
   198     TInt ret = KErrNone;
   198     TInt trapError = KErrNone;
   199     TInt trapError = KErrNone;
   199     iReqHandleType = ECustomTsyReqHandleUnknown;
   200     
       
   201     // Ensure the ReqHandleType is unset.
       
   202     // This will detect cases where this method indirectly calls itself
       
   203     // (e.g. servicing a client call that causes a self-reposting notification to complete and thus repost).
       
   204     // Such cases are not supported because iReqHandleType is in the context of this class instance,
       
   205     // not this request, and we don't want the values set by the inner request and the outer request
       
   206     // interfering with each other.
       
   207     __ASSERT_DEBUG(iReqHandleType==ECustomTsyReqHandleUnknown, User::Invariant());
   200 
   208 
   201     // before processing further the request, check if offline mode status
   209     // before processing further the request, check if offline mode status
   202     // is enabled and if the given request can be perfomed in that case.
   210     // is enabled and if the given request can be perfomed in that case.
   203     if ( ERfsStateInfoInactive == iMmPhoneTsy->GetRfStateInfo() &&
   211     if ( ERfsStateInfoInactive == iMmPhoneTsy->GetRfStateInfo() &&
   204         !IsRequestPossibleInOffline( aIpc ) )
   212         !IsRequestPossibleInOffline( aIpc ) )
   255         ret = CMmTsyBase::DoBaseExtFuncL( aTsyReqHandle, aIpc, aPackage );
   263         ret = CMmTsyBase::DoBaseExtFuncL( aTsyReqHandle, aIpc, aPackage );
   256 
   264 
   257         // if extension modules did not serve this request
   265         // if extension modules did not serve this request
   258         if ( KErrNotSupported == ret )
   266         if ( KErrNotSupported == ret )
   259             {
   267             {
   260             // reset last tsy request type
   268             // Ensure the ReqHandleType is unset.
   261             iReqHandleType = ECustomTsyReqHandleUnknown;
   269             // This will detect cases where this method indirectly calls itself
   262 
   270             // (e.g. servicing a client call that causes a self-reposting notification to complete and thus repost).
       
   271             // Such cases are not supported because iReqHandleType is in the context of this class instance,
       
   272             // not this request, and we don't want the values set by the inner request and the outer request
       
   273             // interfering with each other.
       
   274             __ASSERT_DEBUG(iReqHandleType==ECustomTsyReqHandleUnknown, User::Invariant());
       
   275             
   263             switch ( aIpc )
   276             switch ( aIpc )
   264                 {
   277                 {
   265                 // Perform IMS Authentication
   278                 // Perform IMS Authentication
   266                 case EMobilePhoneIMSAuthenticate:
   279                 case EMobilePhoneIMSAuthenticate:
   267                     ret = ImsAuthenticationL( aTsyReqHandle,
   280                     ret = ImsAuthenticationL( aTsyReqHandle,
   543                 SetTypeOfResponse ( iReqHandleType, aTsyReqHandle );
   556                 SetTypeOfResponse ( iReqHandleType, aTsyReqHandle );
   544 #else
   557 #else
   545                 iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType,
   558                 iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType,
   546                     aTsyReqHandle );
   559                     aTsyReqHandle );
   547 #endif // REQHANDLE_TIMER
   560 #endif // REQHANDLE_TIMER
       
   561                 // We've finished with this value now. Clear it so it doesn't leak
       
   562                 //  up to any other instances of this method down the call stack
       
   563                 iReqHandleType = ECustomTsyReqHandleUnknown;
   548                 }
   564                 }
   549             }
   565             }
   550         }
   566         }
   551 
   567 
   552     return ret;
   568     return ret;