--- a/smsprotocols/smsstack/smsprot/Src/smspdel.cpp Mon May 03 13:37:20 2010 +0300
+++ b/smsprotocols/smsstack/smsprot/Src/smspdel.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,319 +1,319 @@
-// Copyright (c) 1997-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:
-//
-
-#include "smspdel.h"
-#include "smspmain.h"
-
-#include "smsuset.h"
-
-#include <exterror.h>
-#include "SmsuTimer.h"
-#include "smspqueue.h"
-
-
-/**
- * Creates new CSmsStoreRead instance
- *
- * @param aSmsComm reference to the MSmsComm class
- * @param aSmsSettings reference to the TSmsSettings class
- * @param aSmsMessaging reference to the RMobileSmsMessaging class
- */
-CSmsPDUDelete* CSmsPDUDelete::NewL(const TSmsSettings& aSmsSettings,
- RMobileSmsMessaging& aSmsMessaging
- )
- {
- LOGSMSPROT1("CSmsPDUDelete::NewL()");
-
- CSmsPDUDelete* smsPduDelete =
- new(ELeave) CSmsPDUDelete(aSmsSettings,aSmsMessaging);
- CleanupStack::PushL(smsPduDelete);
- smsPduDelete->ConstructL();
- CleanupStack::Pop();
- return smsPduDelete;
- } // CSmsPDUDelete::NewL
-
-
-/**
- * Constructor
- *
- * @param aSmsComm reference to the MSmsComm class
- * @param aSmsSettings reference to the TSmsSettings class
- * @param aSmsMessaging reference to the RMobileSmsMessaging class
- */
-CSmsPDUDelete::CSmsPDUDelete(const TSmsSettings& aSmsSettings,
- RMobileSmsMessaging& aSmsMessaging)
- : CSmsuActiveBase(KSmsSessionPriority),
- iState(ESmsPDUDeleteIdle),
- iSmsSettings(aSmsSettings),
- iSmsMessaging(aSmsMessaging)
- {
- // NOP
- } // CSmsPDUDelete::CSmsPDUDelete
-
-
-/**
- * Creates instance to the class CSmsuTimeout
- */
-void CSmsPDUDelete::ConstructL()
- {
- LOGSMSPROT1("CSmsPDUDelete::ConstructL()");
-
- ConstructTimeoutL();
- } // CSmsPDUDelete::ConstructL
-
-
-/**
- * Starts CSmsPDUDelete active object
- * Calls private methd OpenStore
- *
- * @param aStatus Reguest status
- * @param aStoreIndex Index to the store to be read
- */
-void CSmsPDUDelete::Start(CArrayFix<TGsmSmsSlotEntry>& aLocationArray, TRequestStatus& aStatus)
- {
- LOGSMSPROT1("CSmsPDUDelete::Start()");
-
- __ASSERT_DEBUG(iState==ESmsPDUDeleteIdle,SmspPanic(KSmspPanicUnexpectedState));
-
- Queue(aStatus);
-
- iLocationArray=&aLocationArray;
- iState=ESmsPDUDeleteOpeningStore;
- OpenStore();
- } // CSmsPDUDelete::Start
-
-
-/**
- * Called by Active Scheduler
- *
- * Deletes slots giving in array. Opens new store if store change
- */
-void CSmsPDUDelete::DoRunL()
- {
- LOGSMSPROT2("CSmsPDUDelete::RunL [iStatus=%d]", iStatus.Int());
-
- switch (iState)
- {
- case ESmsPDUDeleteOpeningStore:
- {
- //
- // If the store was opened, then delete the PDU...
- //
- if (iStatus.Int() == KErrNone)
- {
- DeletePDU();
- }
- }
- break;
-
- case ESmsPDUDeleteDeletingPDU:
- {
- //
- // If deleting the PDU returned not found, then this is a valid
- // result so assume KErrNone.
- //
- if (iStatus.Int() == KErrNotFound ||
- iStatus.Int() == KErrGsmSMSInvalidMemoryIndex)
- {
- iStatus = KErrNone;
- }
-
- //
- // If the delete was successful (or assumed to be) then remove
- // it from the list. If the next one is the on a different store,
- // then change stores, otherwise delete it.
- //
- if (iStatus.Int() == KErrNone)
- {
- iLocationArray->Delete(0);
-
- if (iLocationArray->Count() > 0)
- {
- if (iLocationArray->At(0).iStore != iCurrentStore)
- {
- OpenStore();
- }
- else
- {
- DeletePDU();
- }
- }
- }
- }
- break;
-
- default:
- {
- SmspPanic(KSmspPanicUnexpectedState);
- }
- break;
- }
-
- //
- // DoRunL() will now return to CSmsuActiveBase which if the object
- // is not active, will call Complete().
- //
- } // CSmsPDUDelete::DoRunL
-
-
-/**
- * private method for opening the store where slot is saved
- */
-void CSmsPDUDelete::OpenStore()
- {
- LOGSMSPROT1("CSmsPDUDelete::OpenStore()");
-
- //
- // Open the SMS Store for the first PDU...
- //
- if (iLocationArray->Count() > 0)
- {
- //
- // Close it first, just in case it was left open...
- //
- iSmsStorage.Close();
-
- //
- // Now open the store...
- //
- TInt ret;
-
- ret = iSmsStorage.Open(iSmsMessaging, iLocationArray->At(0).iStore);
- if (ret == KErrNone)
- {
- iCurrentStore = iLocationArray->At(0).iStore;
- }
-
- //
- // Complete this object to allow correct flow through DoRunL()
- // and Complete() if needed.
- //
- iState = ESmsPDUDeleteOpeningStore;
-
- CompleteMyself(ret);
- }
- } // CSmsPDUDelete::OpenStore
-
-
-/**
- * private method for deleting slot from the store
- */
-void CSmsPDUDelete::DeletePDU()
- {
- LOGSMSPROT1("CSmsPDUDelete::DeletePDU()");
-
- //
- // Delete the first entry in the list...
- //
- if (iLocationArray->Count() > 0)
- {
- iSmsStorage.Delete(iStatus, iLocationArray->At(0).iIndex);
-
- iState = ESmsPDUDeleteDeletingPDU;
-
- TimedSetActive(iSmsSettings.Timeout());
- }
- } // CSmsPDUDelete::DeletePDU
-
-
-/**
- * Called by Active Scheduler
- */
-void CSmsPDUDelete::DoCancel()
- {
- LOGSMSPROT1("CSmsPDUDelete::DoCancel()");
-
- TimedSetActiveCancel();
-
- switch (iState)
- {
- case ESmsPDUDeleteOpeningStore:
- {
- //
- // Will never happen as CompleteMyself() was used...
- //
- }
- break;
-
- case ESmsPDUDeleteDeletingPDU:
- {
- iSmsStorage.CancelAsyncRequest(EMobilePhoneStoreDelete);
- }
- break;
-
- default:
- {
- SmspPanic(KSmspPanicUnexpectedState);
- }
- }
-
- //
- // Handle completion of this Active Object. Note that the object
- // may well still be active at this point...
- //
- if (TimedOut())
- {
- Complete(KErrTimedOut);
- }
- else
- {
- Complete(KErrCancel);
- }
- } // CSmsPDUDelete::DoCancel
-
-
-/**
- * Completes this object
- */
-void CSmsPDUDelete::Complete(TInt aStatus)
- {
- LOGSMSPROT1("CSmsPDUDelete::Complete()");
-
- //
- // Only close the SMS Storage if the object is not active (and it may be
- // if the operation was cancelled). Otherwise it will be closed on
- // destruction.
- //
- if (!IsActive())
- {
- iSmsStorage.Close();
- }
-
- //
- // Resets slot array...
- //
- iLocationArray->Reset();
-
- //
- // Call the base function to perform the actual complete...
- //
- CSmsuActiveBase::Complete(aStatus);
-
- //
- // This active object has completed...
- //
- iState = ESmsPDUDeleteIdle;
- } // CSmsPDUDelete::Complete
-
-
-/**
- * Destructor
- */
-CSmsPDUDelete::~CSmsPDUDelete()
- {
- Cancel();
- iSmsStorage.Close();
- } // CSmsPDUDelete::~CSmsPDUDelete
-
+// Copyright (c) 1997-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:
+//
+
+#include "smspdel.h"
+#include "smspmain.h"
+
+#include "smsuset.h"
+
+#include <exterror.h>
+#include "SmsuTimer.h"
+#include "smspqueue.h"
+
+
+/**
+ * Creates new CSmsStoreRead instance
+ *
+ * @param aSmsComm reference to the MSmsComm class
+ * @param aSmsSettings reference to the TSmsSettings class
+ * @param aSmsMessaging reference to the RMobileSmsMessaging class
+ */
+CSmsPDUDelete* CSmsPDUDelete::NewL(const TSmsSettings& aSmsSettings,
+ RMobileSmsMessaging& aSmsMessaging
+ )
+ {
+ LOGSMSPROT1("CSmsPDUDelete::NewL()");
+
+ CSmsPDUDelete* smsPduDelete =
+ new(ELeave) CSmsPDUDelete(aSmsSettings,aSmsMessaging);
+ CleanupStack::PushL(smsPduDelete);
+ smsPduDelete->ConstructL();
+ CleanupStack::Pop();
+ return smsPduDelete;
+ } // CSmsPDUDelete::NewL
+
+
+/**
+ * Constructor
+ *
+ * @param aSmsComm reference to the MSmsComm class
+ * @param aSmsSettings reference to the TSmsSettings class
+ * @param aSmsMessaging reference to the RMobileSmsMessaging class
+ */
+CSmsPDUDelete::CSmsPDUDelete(const TSmsSettings& aSmsSettings,
+ RMobileSmsMessaging& aSmsMessaging)
+ : CSmsuActiveBase(KSmsSessionPriority),
+ iState(ESmsPDUDeleteIdle),
+ iSmsSettings(aSmsSettings),
+ iSmsMessaging(aSmsMessaging)
+ {
+ // NOP
+ } // CSmsPDUDelete::CSmsPDUDelete
+
+
+/**
+ * Creates instance to the class CSmsuTimeout
+ */
+void CSmsPDUDelete::ConstructL()
+ {
+ LOGSMSPROT1("CSmsPDUDelete::ConstructL()");
+
+ ConstructTimeoutL();
+ } // CSmsPDUDelete::ConstructL
+
+
+/**
+ * Starts CSmsPDUDelete active object
+ * Calls private methd OpenStore
+ *
+ * @param aStatus Reguest status
+ * @param aStoreIndex Index to the store to be read
+ */
+void CSmsPDUDelete::Start(CArrayFix<TGsmSmsSlotEntry>& aLocationArray, TRequestStatus& aStatus)
+ {
+ LOGSMSPROT1("CSmsPDUDelete::Start()");
+
+ __ASSERT_DEBUG(iState==ESmsPDUDeleteIdle,SmspPanic(KSmspPanicUnexpectedState));
+
+ Queue(aStatus);
+
+ iLocationArray=&aLocationArray;
+ iState=ESmsPDUDeleteOpeningStore;
+ OpenStore();
+ } // CSmsPDUDelete::Start
+
+
+/**
+ * Called by Active Scheduler
+ *
+ * Deletes slots giving in array. Opens new store if store change
+ */
+void CSmsPDUDelete::DoRunL()
+ {
+ LOGSMSPROT2("CSmsPDUDelete::RunL [iStatus=%d]", iStatus.Int());
+
+ switch (iState)
+ {
+ case ESmsPDUDeleteOpeningStore:
+ {
+ //
+ // If the store was opened, then delete the PDU...
+ //
+ if (iStatus.Int() == KErrNone)
+ {
+ DeletePDU();
+ }
+ }
+ break;
+
+ case ESmsPDUDeleteDeletingPDU:
+ {
+ //
+ // If deleting the PDU returned not found, then this is a valid
+ // result so assume KErrNone.
+ //
+ if (iStatus.Int() == KErrNotFound ||
+ iStatus.Int() == KErrGsmSMSInvalidMemoryIndex)
+ {
+ iStatus = KErrNone;
+ }
+
+ //
+ // If the delete was successful (or assumed to be) then remove
+ // it from the list. If the next one is the on a different store,
+ // then change stores, otherwise delete it.
+ //
+ if (iStatus.Int() == KErrNone)
+ {
+ iLocationArray->Delete(0);
+
+ if (iLocationArray->Count() > 0)
+ {
+ if (iLocationArray->At(0).iStore != iCurrentStore)
+ {
+ OpenStore();
+ }
+ else
+ {
+ DeletePDU();
+ }
+ }
+ }
+ }
+ break;
+
+ default:
+ {
+ SmspPanic(KSmspPanicUnexpectedState);
+ }
+ break;
+ }
+
+ //
+ // DoRunL() will now return to CSmsuActiveBase which if the object
+ // is not active, will call Complete().
+ //
+ } // CSmsPDUDelete::DoRunL
+
+
+/**
+ * private method for opening the store where slot is saved
+ */
+void CSmsPDUDelete::OpenStore()
+ {
+ LOGSMSPROT1("CSmsPDUDelete::OpenStore()");
+
+ //
+ // Open the SMS Store for the first PDU...
+ //
+ if (iLocationArray->Count() > 0)
+ {
+ //
+ // Close it first, just in case it was left open...
+ //
+ iSmsStorage.Close();
+
+ //
+ // Now open the store...
+ //
+ TInt ret;
+
+ ret = iSmsStorage.Open(iSmsMessaging, iLocationArray->At(0).iStore);
+ if (ret == KErrNone)
+ {
+ iCurrentStore = iLocationArray->At(0).iStore;
+ }
+
+ //
+ // Complete this object to allow correct flow through DoRunL()
+ // and Complete() if needed.
+ //
+ iState = ESmsPDUDeleteOpeningStore;
+
+ CompleteMyself(ret);
+ }
+ } // CSmsPDUDelete::OpenStore
+
+
+/**
+ * private method for deleting slot from the store
+ */
+void CSmsPDUDelete::DeletePDU()
+ {
+ LOGSMSPROT1("CSmsPDUDelete::DeletePDU()");
+
+ //
+ // Delete the first entry in the list...
+ //
+ if (iLocationArray->Count() > 0)
+ {
+ iSmsStorage.Delete(iStatus, iLocationArray->At(0).iIndex);
+
+ iState = ESmsPDUDeleteDeletingPDU;
+
+ TimedSetActive(iSmsSettings.Timeout());
+ }
+ } // CSmsPDUDelete::DeletePDU
+
+
+/**
+ * Called by Active Scheduler
+ */
+void CSmsPDUDelete::DoCancel()
+ {
+ LOGSMSPROT1("CSmsPDUDelete::DoCancel()");
+
+ TimedSetActiveCancel();
+
+ switch (iState)
+ {
+ case ESmsPDUDeleteOpeningStore:
+ {
+ //
+ // Will never happen as CompleteMyself() was used...
+ //
+ }
+ break;
+
+ case ESmsPDUDeleteDeletingPDU:
+ {
+ iSmsStorage.CancelAsyncRequest(EMobilePhoneStoreDelete);
+ }
+ break;
+
+ default:
+ {
+ SmspPanic(KSmspPanicUnexpectedState);
+ }
+ }
+
+ //
+ // Handle completion of this Active Object. Note that the object
+ // may well still be active at this point...
+ //
+ if (TimedOut())
+ {
+ Complete(KErrTimedOut);
+ }
+ else
+ {
+ Complete(KErrCancel);
+ }
+ } // CSmsPDUDelete::DoCancel
+
+
+/**
+ * Completes this object
+ */
+void CSmsPDUDelete::Complete(TInt aStatus)
+ {
+ LOGSMSPROT1("CSmsPDUDelete::Complete()");
+
+ //
+ // Only close the SMS Storage if the object is not active (and it may be
+ // if the operation was cancelled). Otherwise it will be closed on
+ // destruction.
+ //
+ if (!IsActive())
+ {
+ iSmsStorage.Close();
+ }
+
+ //
+ // Resets slot array...
+ //
+ iLocationArray->Reset();
+
+ //
+ // Call the base function to perform the actual complete...
+ //
+ CSmsuActiveBase::Complete(aStatus);
+
+ //
+ // This active object has completed...
+ //
+ iState = ESmsPDUDeleteIdle;
+ } // CSmsPDUDelete::Complete
+
+
+/**
+ * Destructor
+ */
+CSmsPDUDelete::~CSmsPDUDelete()
+ {
+ Cancel();
+ iSmsStorage.Close();
+ } // CSmsPDUDelete::~CSmsPDUDelete
+