--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/integration/src/cetelsessioncleanup.cpp Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,758 @@
+// Copyright (c) 2007-2009 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:
+// cetelsesscleanup.cpp
+//
+//
+
+#include "cetelsessionmgr.h"
+
+/**
+ * This file contains methods for closing the session objects at cleanup time
+ * and also for tidying the notification queues
+ * @file
+ */
+
+
+//
+// The following CloseXXXMethods are called in cascade from DoCloseAllSessL
+//
+
+/**
+* Close phone subsession and all associated subsessions
+*/
+void CEtelSessionMgr::ClosePhoneSessL(TServerId aServerId, TPhoneId aPhoneId )
+ {
+
+ // Tidy associated sessions
+
+ // Lines
+ for (TLineId lineId = KVoiceLine; lineId < KMaxLines; lineId = TLineId(lineId+1))
+ {
+ CloseLineSessL( aServerId, aPhoneId, lineId );
+ }
+
+ // Conference calls
+ for (TConferenceCallId ccId = KMainConferenceCall; ccId < KMaxConferenceCall; ccId = TConferenceCallId(ccId+1))
+ {
+ CloseConfCallSessL( aServerId, aPhoneId, ccId );
+ }
+
+ // Packet services
+ for (TPacketServiceId packetServiceId = KMainPacketService;
+ packetServiceId < KMaxPacketService;
+ packetServiceId = TPacketServiceId(packetServiceId+1))
+ {
+ ClosePacketServiceSessL( aServerId, aPhoneId, packetServiceId );
+ }
+
+ // PhoneBookStore
+ for (TPhoneBookStoreId phoneBookId = KMeAdnPhoneBook;
+ phoneBookId < KMaxPhoneBookStore;
+ phoneBookId = TPhoneBookStoreId(phoneBookId+1))
+ {
+ ClosePhoneBookStoreSessL( aServerId, aPhoneId, phoneBookId );
+ }
+
+ // ENStore
+ for (TENStoreId enStoreId = KMainENStore;
+ enStoreId < KMaxENStore;
+ enStoreId = TENStoreId(enStoreId+1))
+ {
+ CloseENStoreSessL( aServerId, aPhoneId, enStoreId );
+ }
+
+ // ONStore
+ for (TONStoreId onStoreId = KMainONStore;
+ onStoreId < KMaxONStore;
+ onStoreId = TONStoreId(onStoreId+1))
+ {
+ CloseONStoreSessL( aServerId, aPhoneId, onStoreId );
+ }
+
+ // SmsMessaging
+ for (TSmsMessagingId smsMsgId = KMainSmsMessaging;
+ smsMsgId < KMaxSmsMessaging;
+ smsMsgId = TSmsMessagingId(smsMsgId+1))
+ {
+ CloseSmsMessagingSessL( aServerId, aPhoneId, smsMsgId );
+ }
+
+ // BroadcastMessaging
+ for (TBroadcastMessagingId bcastMsgId = KMainBroadcastMessaging;
+ bcastMsgId < KMaxBroadcastMessaging;
+ bcastMsgId = TBroadcastMessagingId(bcastMsgId+1))
+ {
+ CloseBroadcastMessagingSessL( aServerId, aPhoneId, bcastMsgId );
+ }
+
+ // UssdMessaging
+ for (TUssdMessagingId ussdMsgId = KMainUssdMessaging;
+ ussdMsgId < KMaxUssdMessaging;
+ ussdMsgId = TUssdMessagingId(ussdMsgId+1))
+ {
+ CloseUssdMessagingSessL( aServerId, aPhoneId, ussdMsgId );
+ }
+
+ // CustomAPI
+ for (TCustomApiId customApiId = KMainCustomApi;
+ customApiId < KMaxCustomApi;
+ customApiId = TCustomApiId(customApiId+1))
+ {
+ CloseCustomApiSessL( aServerId, aPhoneId, customApiId);
+ }
+
+ // Finally, close phone
+ TSessionStatus &stat= iPhonesStatus[aServerId][aPhoneId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoClosePhoneL(aServerId, aPhoneId);
+ stat = ESessClosed;
+ }
+ }
+
+
+/**
+* Close lines
+*/
+void CEtelSessionMgr::CloseLineSessL(TServerId aServerId, TPhoneId aPhoneId, TLineId aLineId )
+ {
+
+ // Tidy associated call sessions
+ for (TCallId callId = KCall1; callId < KMaxCalls; callId = TCallId(callId+1))
+ {
+ CloseCallSessL( aServerId, aPhoneId, aLineId, callId );
+ }
+
+ // Tidy this object
+ if (iLinesStatus[aServerId][aPhoneId][aLineId] >= iStatusCloseThresh)
+ {
+ DoCloseLineL(aServerId, aPhoneId,aLineId);
+ iLinesStatus[aServerId][aPhoneId][aLineId] = ESessClosed;
+ }
+ }
+
+
+/**
+* Close calls
+*/
+void CEtelSessionMgr::CloseCallSessL(TServerId aServerId, TPhoneId aPhoneId, TLineId aLineId, TCallId aCallId )
+ {
+
+ // Tidy associated fax sessions
+ for (TFaxId faxId = KMainFax; faxId < KMaxFax; faxId = TFaxId(faxId+1))
+ {
+ CloseFaxSessL( aServerId, aPhoneId, aLineId,aCallId,faxId);
+ }
+
+
+ // Tidy this object
+ if (iCallsStatus[aServerId][aPhoneId][aLineId][aCallId] >= iStatusCloseThresh)
+ {
+ DoCloseCallL(aServerId, aPhoneId,aLineId,aCallId);
+ iCallsStatus[aServerId][aPhoneId][aLineId][aCallId] = ESessClosed;
+ }
+ }
+
+/**
+* Close fax
+*/
+void CEtelSessionMgr::CloseFaxSessL(TServerId aServerId, TPhoneId aPhoneId, TLineId aLineId, TCallId aCallId, TFaxId aFaxId )
+ {
+ if (iFaxesStatus[aServerId][aPhoneId][aLineId][aCallId][aFaxId] >= iStatusCloseThresh)
+ {
+ DoCloseFaxL(aServerId, aPhoneId,aLineId,aCallId,aFaxId);
+ iFaxesStatus[aServerId][aPhoneId][aLineId][aCallId][aFaxId] = ESessClosed;
+ }
+ }
+
+
+/**
+* Close conf calls
+*/
+void CEtelSessionMgr::CloseConfCallSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TConferenceCallId aConfCallId )
+ {
+
+ TSessionStatus &stat= iConferenceCallsStatus[aServerId][aPhoneId][aConfCallId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseConferenceCallL(aServerId, aPhoneId, aConfCallId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close packet service
+*/
+void CEtelSessionMgr::ClosePacketServiceSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TPacketServiceId aPacketServiceId )
+ {
+ // Tidy associated primary contexts
+ for (TPrimaryPacketContextId priCtxId = KPrimaryPacketContext1;
+ priCtxId < KMaxPrimaryPacketContext; priCtxId=TPrimaryPacketContextId(priCtxId+1) )
+ {
+ ClosePacketServiceContextSessL( aServerId, aPhoneId, aPacketServiceId,priCtxId);
+ }
+
+ // Tidy this object
+ TSessionStatus &stat= iPacketServicesStatus[aServerId][aPhoneId][aPacketServiceId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoClosePacketServiceL(aServerId, aPhoneId, aPacketServiceId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close packet context and associated secondaries / QoS
+*/
+void CEtelSessionMgr::ClosePacketServiceContextSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TPacketServiceId aPacketServiceId,
+ TPrimaryPacketContextId aContextId)
+ {
+
+ // Tidy secondaries and associated QoS
+ for (TSecondaryPacketContextId secCtxId = KSecondaryPacketContext1;
+ secCtxId < KMaxSecondaryPacketContext; secCtxId=TSecondaryPacketContextId(secCtxId+1) )
+ {
+
+ // If the secondary has a QoS, close it first
+ TSessionStatus &secQoSStat = iSecondaryPacketContextQoSsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId][secCtxId];
+
+ if( secQoSStat >= iStatusCloseThresh )
+ {
+ DoCloseSecondaryPacketContextQoSL( aServerId, aPhoneId, aPacketServiceId, aContextId, secCtxId );
+ secQoSStat = ESessClosed;
+ }
+
+ // Tidy the secondary context
+ TSessionStatus &secStat = iSecondaryPacketContextsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId][secCtxId];
+
+ if( secStat >= iStatusCloseThresh )
+ {
+ DoCloseSecondaryPacketContextL( aServerId, aPhoneId, aPacketServiceId, aContextId, secCtxId );
+ secStat = ESessClosed;
+ }
+
+ }
+
+ // Tidy our QoS
+ TSessionStatus &priQoSStat = iPrimaryPacketContextQoSsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId];
+
+ if( priQoSStat >= iStatusCloseThresh )
+ {
+ DoClosePrimaryPacketContextQoSL( aServerId, aPhoneId, aPacketServiceId, aContextId );
+ priQoSStat = ESessClosed;
+ }
+
+
+ // Tidy the primary context
+ TSessionStatus &priStat = iPrimaryPacketContextsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId];
+ if ( priStat >= iStatusCloseThresh )
+ {
+ DoClosePrimaryPacketContextL(aServerId, aPhoneId, aPacketServiceId, aContextId);
+ priStat = ESessClosed;
+ }
+ }
+
+/**
+* Close PhoneBookStore
+*/
+void CEtelSessionMgr::ClosePhoneBookStoreSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TPhoneBookStoreId aPhoneBookId )
+ {
+ TSessionStatus &stat= iPhoneBookStoresStatus[aServerId][aPhoneId][aPhoneBookId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoClosePhoneBookStoreL(aServerId, aPhoneId, aPhoneBookId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close ENStore
+*/
+void CEtelSessionMgr::CloseENStoreSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TENStoreId aEnStoreId )
+ {
+ TSessionStatus &stat= iENStoresStatus[aServerId][aPhoneId][aEnStoreId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseENStoreL(aServerId, aPhoneId, aEnStoreId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close ONStore
+*/
+void CEtelSessionMgr::CloseONStoreSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TONStoreId aOnStoreId )
+ {
+ TSessionStatus &stat= iONStoresStatus[aServerId][aPhoneId][aOnStoreId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseONStoreL(aServerId, aPhoneId, aOnStoreId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close SmsMessaging
+*/
+void CEtelSessionMgr::CloseSmsMessagingSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TSmsMessagingId aSmsMsgId )
+ {
+
+ // Tidy associated SmsStore
+ for (TSmsStoreId smsStoreId = KMeSmsStore;
+ smsStoreId < KMaxSmsStore;
+ smsStoreId = TSmsStoreId(smsStoreId+1))
+ {
+ CloseSmsStoreSessL( aServerId, aPhoneId, aSmsMsgId, smsStoreId );
+ }
+
+
+ TSessionStatus &stat= iSmsMessagingsStatus[aServerId][aPhoneId][aSmsMsgId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseSmsMessagingL(aServerId, aPhoneId, aSmsMsgId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close SmsStore
+*/
+void CEtelSessionMgr::CloseSmsStoreSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TSmsMessagingId aSmsMsgId, TSmsStoreId aSmsStoreId )
+ {
+ TSessionStatus &stat= iSmsStoresStatus[aServerId][aPhoneId][aSmsMsgId][aSmsStoreId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseSmsStoreL(aServerId, aPhoneId, aSmsMsgId, aSmsStoreId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close BroadcastMessaging
+*/
+void CEtelSessionMgr::CloseBroadcastMessagingSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TBroadcastMessagingId aBcastMsgId )
+ {
+ TSessionStatus &stat= iBroadcastMessagingsStatus[aServerId][aPhoneId][aBcastMsgId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseBroadcastMessagingL(aServerId, aPhoneId, aBcastMsgId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+* Close UssdMessaging
+*/
+void CEtelSessionMgr::CloseUssdMessagingSessL(TServerId aServerId, TPhoneId aPhoneId,
+ TUssdMessagingId aUssdMsgId )
+ {
+ TSessionStatus &stat= iUssdMessagingsStatus[aServerId][aPhoneId][aUssdMsgId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseUssdMessagingL(aServerId, aPhoneId, aUssdMsgId);
+ stat = ESessClosed;
+ }
+ }
+
+/**
+ * Close CustomAPI
+ */
+void CEtelSessionMgr::CloseCustomApiSessL(TServerId aServerId, TPhoneId aPhoneId, TCustomApiId aCustomApiId)
+ {
+ TSessionStatus &stat= iUssdMessagingsStatus[aServerId][aPhoneId][aCustomApiId];
+ if ( stat >= iStatusCloseThresh)
+ {
+ DoCloseCustomApiL(aServerId, aPhoneId, aCustomApiId);
+ stat = ESessClosed;
+ }
+ }
+
+//
+// Tidy notification cascade
+//
+
+
+/**
+* Tidy notifiers for phone subsession and all associated subsessions
+*/
+void CEtelSessionMgr::TidyPhoneNotifiers(TServerId aServerId, TPhoneId aPhoneId)
+ {
+
+ // Tidy associated sessions
+
+ // Lines
+ for (TLineId lineId = KVoiceLine; lineId < KMaxLines; lineId = TLineId(lineId+1))
+ {
+ TidyLineNotifiers( aServerId, aPhoneId, lineId );
+ }
+
+ // Conference calls
+ for (TConferenceCallId ccId = KMainConferenceCall; ccId < KMaxConferenceCall;
+ ccId = TConferenceCallId(ccId+1))
+ {
+ TidyConfCallNotifiers( aServerId, aPhoneId, ccId );
+ }
+
+ // Packet services
+ for (TPacketServiceId packetServiceId = KMainPacketService;
+ packetServiceId < KMaxPacketService;
+ packetServiceId = TPacketServiceId(packetServiceId+1))
+ {
+ TidyPacketServiceNotifiers( aServerId, aPhoneId, packetServiceId );
+ }
+
+ // PhoneBookStore
+ for (TPhoneBookStoreId phoneBookId = KMeAdnPhoneBook;
+ phoneBookId < KMaxPhoneBookStore;
+ phoneBookId = TPhoneBookStoreId(phoneBookId+1))
+ {
+ TidyPhoneBookStoreNotifiers( aServerId, aPhoneId, phoneBookId );
+ }
+
+ // ENStore
+ for (TENStoreId enStoreId = KMainENStore;
+ enStoreId < KMaxENStore;
+ enStoreId = TENStoreId(enStoreId+1))
+ {
+ TidyENStoreNotifiers( aServerId, aPhoneId, enStoreId );
+ }
+
+ // ONStore
+ for (TONStoreId onStoreId = KMainONStore;
+ onStoreId < KMaxONStore;
+ onStoreId = TONStoreId(onStoreId+1))
+ {
+ TidyONStoreNotifiers( aServerId, aPhoneId, onStoreId );
+ }
+
+ // SmsMessaging
+ for (TSmsMessagingId smsMsgId = KMainSmsMessaging;
+ smsMsgId < KMaxSmsMessaging;
+ smsMsgId = TSmsMessagingId(smsMsgId+1))
+ {
+ TidySmsMessagingNotifiers( aServerId, aPhoneId, smsMsgId );
+ }
+
+ // BroadcastMessaging
+ for (TBroadcastMessagingId bcastMsgId = KMainBroadcastMessaging;
+ bcastMsgId < KMaxBroadcastMessaging;
+ bcastMsgId = TBroadcastMessagingId(bcastMsgId+1))
+ {
+ TidyBroadcastMessagingNotifiers( aServerId, aPhoneId, bcastMsgId );
+ }
+
+ // UssdMessaging
+ for (TUssdMessagingId ussdMsgId = KMainUssdMessaging;
+ ussdMsgId < KMaxUssdMessaging;
+ ussdMsgId = TUssdMessagingId(ussdMsgId+1))
+ {
+ TidyUssdMessagingNotifiers( aServerId, aPhoneId, ussdMsgId );
+ }
+
+ // CustomAPI
+ for (TCustomApiId customApiId = KMainCustomApi;
+ customApiId < KMaxCustomApi;
+ customApiId = TCustomApiId(customApiId+1))
+ {
+ TidyCustomApiNotifiers( aServerId, aPhoneId, customApiId );
+ }
+
+ // Finally, tidy phone
+ if ( iPhonesStatus[aServerId][aPhoneId] > ESessClosed)
+ {
+ // Cleanup both sets of notification for base and derived
+ CleanupPhoneNotifiers( iPhones[aServerId][aPhoneId] );
+ CleanupMobilePhoneNotifiers( iPhones[aServerId][aPhoneId] );
+ }
+ }
+
+/**
+* Tidy notifiers for lines
+*/
+void CEtelSessionMgr::TidyLineNotifiers(TServerId aServerId, TPhoneId aPhoneId, TLineId aLineId )
+ {
+
+ // Tidy associated call sessions
+ for (TCallId callId = KCall1; callId < KMaxCalls; callId = TCallId(callId+1))
+ {
+ TidyCallNotifiers( aServerId, aPhoneId, aLineId, callId );
+ }
+
+ // Tidy this object
+ if( iLinesStatus[aServerId][aPhoneId][aLineId] > ESessClosed)
+ {
+ // Cleanup both sets of notification for base and derived
+ CleanupLineNotifiers(iLines[aServerId][aPhoneId][aLineId]);
+ CleanupMobileLineNotifiers(iLines[aServerId][aPhoneId][aLineId]);
+ }
+ }
+
+
+/**
+* Tidy notifiers for calls
+*/
+void CEtelSessionMgr::TidyCallNotifiers(TServerId aServerId, TPhoneId aPhoneId, TLineId aLineId,
+ TCallId aCallId )
+ {
+
+ // Tidy associated fax sessions
+ for (TFaxId faxId = KMainFax; faxId < KMaxFax; faxId = TFaxId(faxId+1))
+ {
+ TidyFaxNotifiers( aServerId, aPhoneId, aLineId,aCallId,faxId);
+ }
+
+
+ // Tidy this object
+ if ( iCallsStatus[aServerId][aPhoneId][aLineId][aCallId] > ESessClosed )
+ {
+ CleanupCallNotifiers( iCalls[aServerId][aPhoneId][aLineId][aCallId] );
+ CleanupMobileCallNotifiers( iCalls[aServerId][aPhoneId][aLineId][aCallId] );
+ }
+ }
+
+/**
+* Tidy notifiers for fax
+*/
+void CEtelSessionMgr::TidyFaxNotifiers(TServerId, TPhoneId, TLineId, TCallId, TFaxId )
+ {
+
+ // No notifiers at present
+ //
+ //if (iFaxesStatus[aServerId][aPhoneId][aLineId][aCallId][aFaxId] > ESessClosed)
+ // {
+ // CleanupFaxNotifiers( iFaxes[aServerId][aPhoneId][aLineId][aCallId][aFaxId] );
+ // }
+ }
+
+
+/**
+* Tidy notifiers for conf calls
+*/
+void CEtelSessionMgr::TidyConfCallNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TConferenceCallId aConfCallId )
+ {
+
+ TSessionStatus &stat= iConferenceCallsStatus[aServerId][aPhoneId][aConfCallId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobileConferenceCallNotifiers( iConferenceCalls[aServerId][aPhoneId][aConfCallId]);
+ }
+ }
+
+/**
+* Tidy notifiers for packet service
+*/
+void CEtelSessionMgr::TidyPacketServiceNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TPacketServiceId aPacketServiceId )
+ {
+ // Tidy associated primary contexts
+ for (TPrimaryPacketContextId priCtxId = KPrimaryPacketContext1;
+ priCtxId < KMaxPrimaryPacketContext; priCtxId=TPrimaryPacketContextId(priCtxId+1) )
+ {
+ TidyPacketServiceContextNotifiers( aServerId, aPhoneId, aPacketServiceId,priCtxId);
+ }
+
+ // Tidy this object
+ TSessionStatus &stat= iPacketServicesStatus[aServerId][aPhoneId][aPacketServiceId];
+ if ( stat > ESessClosed)
+ {
+ CleanupPacketServiceNotifiers(iPacketServices[aServerId][aPhoneId][aPacketServiceId]);
+ }
+ }
+
+/**
+* Tidy notifiers for packet context and associated secondaries / QoS
+*/
+void CEtelSessionMgr::TidyPacketServiceContextNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TPacketServiceId aPacketServiceId,
+ TPrimaryPacketContextId aContextId)
+ {
+
+ // Tidy secondaries and associated QoS
+ for (TSecondaryPacketContextId secCtxId = KSecondaryPacketContext1;
+ secCtxId < KMaxSecondaryPacketContext; secCtxId=TSecondaryPacketContextId(secCtxId+1) )
+ {
+
+ // If the secondary has a QoS, close it first
+ TSessionStatus &secQoSStat = iSecondaryPacketContextQoSsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId][secCtxId];
+
+ if( secQoSStat > ESessClosed )
+ {
+ CleanupPacketQoSNotifiers( iSecondaryPacketContextQoSs[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId][secCtxId] );
+
+ }
+
+ // Tidy the secondary context
+ TSessionStatus &secStat = iSecondaryPacketContextsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId][secCtxId];
+
+ if( secStat > ESessClosed )
+ {
+ CleanupPacketContextNotifiers( iSecondaryPacketContexts[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId][secCtxId] );
+ }
+
+ }
+
+ // Tidy our QoS
+ TSessionStatus &priQoSStat = iPrimaryPacketContextQoSsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId];
+
+ if( priQoSStat > ESessClosed )
+ {
+ CleanupPacketQoSNotifiers( iPrimaryPacketContextQoSs[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId] );
+
+ }
+
+
+ // Tidy the primary context
+ TSessionStatus &priStat = iPrimaryPacketContextsStatus[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId];
+ if ( priStat > ESessClosed )
+ {
+ CleanupPacketContextNotifiers(iPrimaryPacketContexts[aServerId][aPhoneId]
+ [aPacketServiceId][aContextId]);
+
+ }
+ }
+
+/**
+* Tidy PhoneBookStore
+*/
+void CEtelSessionMgr::TidyPhoneBookStoreNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TPhoneBookStoreId aPhoneBookStoreId )
+ {
+ TSessionStatus &stat= iPhoneBookStoresStatus[aServerId][aPhoneId][aPhoneBookStoreId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobilePhoneStoreNotifiers(iPhoneBookStores[aServerId][aPhoneId][aPhoneBookStoreId]);
+ }
+ }
+
+/**
+* Tidy ENStore
+*/
+void CEtelSessionMgr::TidyENStoreNotifiers(TServerId aServerId, TPhoneId aPhoneId, TENStoreId aENStoreId)
+ {
+ TSessionStatus &stat= iENStoresStatus[aServerId][aPhoneId][aENStoreId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobilePhoneStoreNotifiers(iENStores[aServerId][aPhoneId][aENStoreId]);
+ }
+ }
+
+/**
+* Tidy ONStore
+*/
+void CEtelSessionMgr::TidyONStoreNotifiers(TServerId aServerId, TPhoneId aPhoneId, TONStoreId aONStoreId)
+ {
+ TSessionStatus &stat= iONStoresStatus[aServerId][aPhoneId][aONStoreId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobilePhoneStoreNotifiers(iONStores[aServerId][aPhoneId][aONStoreId]);
+ }
+ }
+
+/**
+* Tidy SmsMessaging
+*/
+void CEtelSessionMgr::TidySmsMessagingNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TSmsMessagingId aSmsMsgId )
+ {
+
+ // Tidy associated Sms
+ for (TSmsStoreId smsStoreId = KMeSmsStore;
+ smsStoreId < KMaxSmsStore;
+ smsStoreId = TSmsStoreId(smsStoreId+1))
+ {
+ TidySmsStoreNotifiers( aServerId, aPhoneId, aSmsMsgId, smsStoreId );
+ }
+
+
+ TSessionStatus &stat= iSmsMessagingsStatus[aServerId][aPhoneId][aSmsMsgId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobileSmsMessagingNotifiers(iSmsMessagings[aServerId][aPhoneId][aSmsMsgId]);
+
+ }
+ }
+
+/**
+* Tidy SmsStore
+*/
+void CEtelSessionMgr::TidySmsStoreNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TSmsMessagingId aSmsMsgId, TSmsStoreId aSmsStoreId )
+ {
+ TSessionStatus &stat= iSmsStoresStatus[aServerId][aPhoneId][aSmsMsgId][aSmsStoreId];
+ if( stat > ESessClosed)
+ {
+ CleanupMobilePhoneStoreNotifiers(iSmsStores[aServerId][aPhoneId][aSmsMsgId][aSmsStoreId]);
+ }
+ }
+
+/**
+* Tidy BroadcastMessaging
+*/
+void CEtelSessionMgr::TidyBroadcastMessagingNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TBroadcastMessagingId aBcastMsgId )
+ {
+ TSessionStatus &stat= iBroadcastMessagingsStatus[aServerId][aPhoneId][aBcastMsgId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobileBroadcastMessagingNotifiers(iBroadcastMessagings[aServerId][aPhoneId][aBcastMsgId]);
+
+ }
+ }
+
+/**
+* Tidy UssdMessaging
+*/
+void CEtelSessionMgr::TidyUssdMessagingNotifiers(TServerId aServerId, TPhoneId aPhoneId,
+ TUssdMessagingId aUssdMsgId )
+ {
+ TSessionStatus &stat= iUssdMessagingsStatus[aServerId][aPhoneId][aUssdMsgId];
+ if ( stat > ESessClosed)
+ {
+ CleanupMobileUssdMessagingNotifiers(iUssdMessagings[aServerId][aPhoneId][aUssdMsgId]);
+ }
+ }
+
+
+/**
+* Tidy CustomApi
+*/
+void CEtelSessionMgr::TidyCustomApiNotifiers(TServerId aServerId, TPhoneId aPhoneId, TCustomApiId aCustomApiId)
+ {
+ TSessionStatus &stat= iCustomApisStatus[aServerId][aPhoneId][aCustomApiId];
+ if ( stat > ESessClosed)
+ {
+ CleanupCustomAPINotifiers(iCustomApis[aServerId][aPhoneId][aCustomApiId]);
+ }
+ }