telephonyserverplugins/common_tsy/commontsy/src/mmpacket/Cmmpacketqostsy.cpp
changeset 20 244d7c5f118e
parent 0 3553901f7fa8
child 24 6638e7f4bd8f
child 42 3adadc800673
child 61 17af172ffa5f
equal deleted inserted replaced
19:1f776524b15c 20:244d7c5f118e
    25 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
    25 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
    26 #include <ctsy/pluginapi/cmmdatapackage.h>
    26 #include <ctsy/pluginapi/cmmdatapackage.h>
    27 
    27 
    28 // ======== MEMBER FUNCTIONS ========
    28 // ======== MEMBER FUNCTIONS ========
    29 
    29 
    30 CMmPacketQoSTsy::CMmPacketQoSTsy()
    30 CMmPacketQoSTsy::CMmPacketQoSTsy():
       
    31     iReqHandleType(EMultimodePacketQoSReqHandleUnknown)
    31     {
    32     {
    32     }
    33     }
    33 
    34 
    34 CMmPacketQoSTsy* CMmPacketQoSTsy::NewL(
    35 CMmPacketQoSTsy* CMmPacketQoSTsy::NewL(
    35         CMmPacketServiceTsy* aMmPacketService,
    36         CMmPacketServiceTsy* aMmPacketService,
   119     {
   120     {
   120 TFLOGSTRING2("TSY: CMmPacketQoSTsy::ExtFunc. aIpc: %d", aIpc );
   121 TFLOGSTRING2("TSY: CMmPacketQoSTsy::ExtFunc. aIpc: %d", aIpc );
   121     TInt ret( KErrNone );
   122     TInt ret( KErrNone );
   122     TInt trapError( KErrNone );
   123     TInt trapError( KErrNone );
   123 
   124 
   124     // Reset last tsy request type
   125     // Ensure the ReqHandleType is unset.
   125     iReqHandleType = EMultimodePacketQoSReqHandleUnknown;
   126     // This will detect cases where this method indirectly calls itself
       
   127     // (e.g. servicing a client call that causes a self-reposting notification to complete and thus repost).
       
   128     // Such cases are not supported because iReqHandleType is in the context of this class instance,
       
   129     // not this request, and we don't want the values set by the inner request and the outer request
       
   130     // interfering with each other.
       
   131     __ASSERT_DEBUG(iReqHandleType==EMultimodePacketQoSReqHandleUnknown, User::Invariant());
   126 
   132 
   127     TRAP( trapError, ret = DoExtFuncL( aTsyReqHandle, aIpc, aPackage ); );
   133     TRAP( trapError, ret = DoExtFuncL( aTsyReqHandle, aIpc, aPackage ); );
   128 
   134 
   129     if ( KErrNone != trapError )
   135     if ( KErrNone != trapError )
   130         {
   136         {
   141 #ifdef REQHANDLE_TIMER
   147 #ifdef REQHANDLE_TIMER
   142         SetTypeOfResponse( iReqHandleType, aTsyReqHandle );
   148         SetTypeOfResponse( iReqHandleType, aTsyReqHandle );
   143 #else
   149 #else
   144         iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, aTsyReqHandle );
   150         iTsyReqHandleStore->SetTsyReqHandle( iReqHandleType, aTsyReqHandle );
   145 #endif //REQHANDLE_TIMER
   151 #endif //REQHANDLE_TIMER
       
   152         // We've finished with this value now. Clear it so it doesn't leak
       
   153         //  up to any other instances of this method down the call stack
       
   154         iReqHandleType = EMultimodePacketQoSReqHandleUnknown;
   146         }
   155         }
   147 
   156 
   148     return KErrNone;
   157     return KErrNone;
   149 
   158 
   150     }
   159     }