smsprotocols/smsstack/smsprot/Src/smspqueue.cpp
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
equal deleted inserted replaced
19:630d2f34d719 20:07a122eea281
     1 // Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
    16 //
    16 //
    17 
    17 
    18 /**
    18 /**
    19  @file
    19  @file
    20 */
    20 */
    21 
       
    22 
       
    23 #include "OstTraceDefinitions.h"
       
    24 #ifdef OST_TRACE_COMPILER_IN_USE
       
    25 #include "smspqueueTraces.h"
       
    26 #endif
       
    27 
    21 
    28 #include "smspqueue.h"
    22 #include "smspqueue.h"
    29 #include "smspcomm.h"
    23 #include "smspcomm.h"
    30 #include "Gsmumsg.h"
    24 #include "Gsmumsg.h"
    31 #include "smspdel.h"
    25 #include "smspdel.h"
    83 	} // CSmspMessageQueue::~CSmspMessageQueue
    77 	} // CSmspMessageQueue::~CSmspMessageQueue
    84 
    78 
    85 
    79 
    86 void CSmspMessageQueue::DoRunL()
    80 void CSmspMessageQueue::DoRunL()
    87 	{
    81 	{
    88 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_DORUNL_1, "CSmspMessageQueue::DoRunL()");
    82 	LOGSMSPROT1("CSmspMessageQueue::DoRunL()");
    89 
    83 
    90 	CompleteFirst(iStatus.Int());
    84 	CompleteFirst(iStatus.Int());
    91 	Start();
    85 	Start();
    92 	} // CSmspMessageQueue::DoRunL
    86 	} // CSmspMessageQueue::DoRunL
    93 
    87 
    94 
    88 
    95 void CSmspMessageQueue::Queue(CSmsMessage* aMessage, MSmsMessageObserver& aObserver, TUint aOptions)
    89 void CSmspMessageQueue::Queue(CSmsMessage* aMessage, MSmsMessageObserver& aObserver, TUint aOptions)
    96 	{
    90 	{
    97 	TRAPD(err, DoQueueL(aMessage, aObserver, aOptions));
    91 	TRAPD(err, DoQueueL(aMessage, aObserver, aOptions));
    98 
    92 
    99 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_QUEUE_1, "*** CSmspMessageQueue::Queue [err=%d aObserver=0x%08x IsActive=%d]", err, (TUint) &aObserver, IsActive());
    93 	LOGSMSPROT4("*** CSmspMessageQueue::Queue [err=%d aObserver=0x%08x IsActive=%d]", err, &aObserver, IsActive());
   100 
    94 
   101 	if (err != KErrNone)
    95 	if (err != KErrNone)
   102 		{
    96 		{
   103 		CompleteObserver(aObserver, err);
    97 		CompleteObserver(aObserver, err);
   104 		}
    98 		}
   109 	} // CSmspMessageQueue::Queue
   103 	} // CSmspMessageQueue::Queue
   110 
   104 
   111 
   105 
   112 void CSmspMessageQueue::DoQueueL(CSmsMessage* aMessage, MSmsMessageObserver& aObserver, TUint aOptions)
   106 void CSmspMessageQueue::DoQueueL(CSmsMessage* aMessage, MSmsMessageObserver& aObserver, TUint aOptions)
   113 	{
   107 	{
   114 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_DOQUEUEL_1, "CSmspMessageQueue::DoQueueL()");
   108 	LOGSMSPROT1("CSmspMessageQueue::DoQueueL()");
   115 
   109 
   116 	CleanupStack::PushL(aMessage);
   110 	CleanupStack::PushL(aMessage);
   117 
   111 
   118 	CQueuedSmsMessage* queuedsmsmessage= new (ELeave) CQueuedSmsMessage(aMessage, aObserver, aOptions);
   112 	CQueuedSmsMessage* queuedsmsmessage= new (ELeave) CQueuedSmsMessage(aMessage, aObserver, aOptions);
   119 
   113 
   136 /**
   130 /**
   137  *  Completes all items in the queue with KErrCancel
   131  *  Completes all items in the queue with KErrCancel
   138  */
   132  */
   139 void CSmspMessageQueue::DoCancel()
   133 void CSmspMessageQueue::DoCancel()
   140 	{
   134 	{
   141 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_DOCANCEL_1, "*** CSmspMessageQueue::DoCancel");
   135 	LOGSMSPROT1("*** CSmspMessageQueue::DoCancel");
   142 
   136 
   143 	TSglQueIter<CQueuedSmsMessage> iter(iMessageQueue);
   137 	TSglQueIter<CQueuedSmsMessage> iter(iMessageQueue);
   144 	CQueuedSmsMessage* queuedsmsmessage = iter;
   138 	CQueuedSmsMessage* queuedsmsmessage = iter;
   145 
   139 
   146 	if ( queuedsmsmessage!=NULL )
   140 	if ( queuedsmsmessage!=NULL )
   150 	} // CSmspMessageQueue::DoCancel
   144 	} // CSmspMessageQueue::DoCancel
   151 
   145 
   152 
   146 
   153 void CSmspMessageQueue::CompleteFirst(TInt aStatus)
   147 void CSmspMessageQueue::CompleteFirst(TInt aStatus)
   154 	{
   148 	{
   155 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_COMPLETEFIRST_1, "CSmspMessageQueue::CompleteFirst()");
   149 	LOGSMSPROT1("CSmspMessageQueue::CompleteFirst()");
   156 
   150 
   157 	CompleteRequest(iMessageQueue.First(), aStatus);
   151 	CompleteRequest(iMessageQueue.First(), aStatus);
   158 	} // CSmspMessageQueue::CompleteFirst
   152 	} // CSmspMessageQueue::CompleteFirst
   159 
   153 
   160 
   154 
   161 void CSmspMessageQueue::CompleteRequest(CQueuedSmsMessage* aQueuedMessage, TInt aStatus)
   155 void CSmspMessageQueue::CompleteRequest(CQueuedSmsMessage* aQueuedMessage, TInt aStatus)
   162 	{
   156 	{
   163 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_COMPLETEREQUEST_1, "*** CSmspMessageQueue::CompleteRequest [aStatus=%d aObserver=0x%X IsFirst=%d]", aStatus,(TUint) &aQueuedMessage->iObserver, iMessageQueue.IsFirst(aQueuedMessage));
   157 	LOGSMSPROT4("*** CSmspMessageQueue::CompleteRequest [aStatus=%d aObserver=0x%X IsFirst=%d]", aStatus, &aQueuedMessage->iObserver, iMessageQueue.IsFirst(aQueuedMessage));
   164 
   158 
   165 	// From defect HOE-563KLY, need to cancel request if active and remove from queue
   159 	// From defect HOE-563KLY, need to cancel request if active and remove from queue
   166 	// before observer has chance to manipulate queue
   160 	// before observer has chance to manipulate queue
   167 	CancelRequestIfObserved(aQueuedMessage->iObserver);
   161 	CancelRequestIfObserved(aQueuedMessage->iObserver);
   168 	iMessageQueue.Remove(*aQueuedMessage);
   162 	iMessageQueue.Remove(*aQueuedMessage);
   171 	} // CSmspMessageQueue::CompleteRequest
   165 	} // CSmspMessageQueue::CompleteRequest
   172 
   166 
   173 
   167 
   174 void CSmspMessageQueue::CancelObserver(MSmsMessageObserver& aObserver)
   168 void CSmspMessageQueue::CancelObserver(MSmsMessageObserver& aObserver)
   175 	{
   169 	{
   176 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPMESSAGEQUEUE_CANCELOBSERVER_1, "*** CSmspMessageQueue::CancelObserver [aObserver=0x%X]", &aObserver);
   170 	LOGSMSPROT2("*** CSmspMessageQueue::CancelObserver [aObserver=0x%X]", &aObserver);
   177 
   171 
   178 	TSglQueIter<CQueuedSmsMessage> iter(iMessageQueue);
   172 	TSglQueIter<CQueuedSmsMessage> iter(iMessageQueue);
   179 	CQueuedSmsMessage* queuedsmsmessage = iter;
   173 	CQueuedSmsMessage* queuedsmsmessage = iter;
   180 
   174 
   181 	for (; queuedsmsmessage!=NULL; queuedsmsmessage = iter++)
   175 	for (; queuedsmsmessage!=NULL; queuedsmsmessage = iter++)
   224  *  @param aObserver the observer to notify on completion.
   218  *  @param aObserver the observer to notify on completion.
   225  *  
   219  *  
   226  */
   220  */
   227 CQueuedPDUDelete* CQueuedPDUDelete::NewL(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray,MSmsMessageObserver* aObserver)
   221 CQueuedPDUDelete* CQueuedPDUDelete::NewL(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray,MSmsMessageObserver* aObserver)
   228 	{
   222 	{
   229 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CQUEUEDPDUDELETE_NEWL_1, "CQueuedPDUDelete::NewL()");
   223 	LOGSMSPROT1("CQueuedPDUDelete::NewL()");
   230 
   224 
   231 	CQueuedPDUDelete* queuedpdudelete=new(ELeave) CQueuedPDUDelete(aObserver);
   225 	CQueuedPDUDelete* queuedpdudelete=new(ELeave) CQueuedPDUDelete(aObserver);
   232 	CleanupStack::PushL(queuedpdudelete);
   226 	CleanupStack::PushL(queuedpdudelete);
   233 	queuedpdudelete->ConstructL(aSlotArray);
   227 	queuedpdudelete->ConstructL(aSlotArray);
   234 	CleanupStack::Pop();
   228 	CleanupStack::Pop();
   253  *  the internal array.
   247  *  the internal array.
   254  *  
   248  *  
   255  */
   249  */
   256 void CQueuedPDUDelete::ConstructL(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray)
   250 void CQueuedPDUDelete::ConstructL(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray)
   257 	{
   251 	{
   258 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CQUEUEDPDUDELETE_CONSTRUCTL_1, "CQueuedPDUDelete::ConstructL()");
   252 	LOGSMSPROT1("CQueuedPDUDelete::ConstructL()");
   259 
   253 
   260 	TInt count=aSlotArray.Count();
   254 	TInt count=aSlotArray.Count();
   261 	for (TInt i=0; i<count; i++)
   255 	for (TInt i=0; i<count; i++)
   262 		iLocationArray.AppendL(aSlotArray[i]);
   256 		iLocationArray.AppendL(aSlotArray[i]);
   263 	} // CQueuedPDUDelete::ConstructL
   257 	} // CQueuedPDUDelete::ConstructL
   282  *  @internalComponent
   276  *  @internalComponent
   283  *  @capability None
   277  *  @capability None
   284  */
   278  */
   285 void CSmspDeleteQueue::RunL()
   279 void CSmspDeleteQueue::RunL()
   286 	{
   280 	{
   287 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_RUNL_1, "CSmspDeleteQueue::RunL()");
   281 	LOGSMSPROT1("CSmspDeleteQueue::RunL()");
   288 
   282 
   289 	CompleteFirst(iStatus.Int());
   283 	CompleteFirst(iStatus.Int());
   290 
   284 
   291 	if (iDeleteQueue.IsEmpty() && iSmsComm.ClosingDown())
   285 	if (iDeleteQueue.IsEmpty() && iSmsComm.ClosingDown())
   292 		{
   286 		{
   303 
   297 
   304 void CSmspDeleteQueue::DoRunL()
   298 void CSmspDeleteQueue::DoRunL()
   305     {
   299     {
   306     // Ignore in code coverage - the delete queue implements its own RunL.
   300     // Ignore in code coverage - the delete queue implements its own RunL.
   307     BULLSEYE_OFF
   301     BULLSEYE_OFF
   308     OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_DORUNL_1, "CSmspDeleteQueue::DoRunL()");
   302     LOGSMSPROT1("CSmspDeleteQueue::DoRunL()");
   309 
   303 
   310 // This CSmspDeleteQueue::DoRunL() function would be called by
   304 // This CSmspDeleteQueue::DoRunL() function would be called by
   311 // CSmsuActiveBase::RunL().  However, CSmspDeleteQueue::RunL() now
   305 // CSmsuActiveBase::RunL().  However, CSmspDeleteQueue::RunL() now
   312 // overwrites CSmsuActiveBase::RunL(), to make sure the delete queue is
   306 // overwrites CSmsuActiveBase::RunL(), to make sure the delete queue is
   313 // not used after the CloseNowWrap() call.  Therefore, this is now a
   307 // not used after the CloseNowWrap() call.  Therefore, this is now a
   317 
   311 
   318 void CSmspDeleteQueue::Queue(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray, MSmsMessageObserver* aObserver)
   312 void CSmspDeleteQueue::Queue(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray, MSmsMessageObserver* aObserver)
   319 	{
   313 	{
   320 	TRAPD(err, DoQueueL(aSlotArray, aObserver));
   314 	TRAPD(err, DoQueueL(aSlotArray, aObserver));
   321 
   315 
   322 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_QUEUE_1, "*** CSmspDeleteQueue::Queue [err=%d aObserver=0x%X IsActive=%d]", err, (TUint)aObserver, IsActive());
   316 	LOGSMSPROT4("*** CSmspDeleteQueue::Queue [err=%d aObserver=0x%X IsActive=%d]", err, aObserver, IsActive());
   323 
   317 
   324 	if (err != KErrNone)
   318 	if (err != KErrNone)
   325 		{
   319 		{
   326 		if (aObserver != NULL)
   320 		if (aObserver != NULL)
   327 			{
   321 			{
   333 	} // CSmspDeleteQueue::Queue
   327 	} // CSmspDeleteQueue::Queue
   334 
   328 
   335 
   329 
   336 void CSmspDeleteQueue::DoQueueL(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray, MSmsMessageObserver* aObserver)
   330 void CSmspDeleteQueue::DoQueueL(const CArrayFix<TGsmSmsSlotEntry>& aSlotArray, MSmsMessageObserver* aObserver)
   337 	{
   331 	{
   338 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_DOQUEUEL_1, "CSmspDeleteQueue::DoQueueL()");
   332 	LOGSMSPROT1("CSmspDeleteQueue::DoQueueL()");
   339 
   333 
   340 	CQueuedPDUDelete* queuedDelete= CQueuedPDUDelete::NewL(aSlotArray, aObserver);
   334 	CQueuedPDUDelete* queuedDelete= CQueuedPDUDelete::NewL(aSlotArray, aObserver);
   341 	iDeleteQueue.AddLast(*queuedDelete);
   335 	iDeleteQueue.AddLast(*queuedDelete);
   342 	} // CSmspDeleteQueue::DoQueueL
   336 	} // CSmspDeleteQueue::DoQueueL
   343 
   337 
   344 
   338 
   345 CSmspDeleteQueue::CSmspDeleteQueue(MSmsComm& aSmsComm, TInt aPriority)
   339 CSmspDeleteQueue::CSmspDeleteQueue(MSmsComm& aSmsComm, TInt aPriority)
   346 : CSmspProtocolQueue(aSmsComm, aPriority)
   340 : CSmspProtocolQueue(aSmsComm, aPriority)
   347 	{
   341 	{
   348 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_CTOR_1, "CSmspDeleteQueue::CSmspDeleteQueue()");
   342 	LOGSMSPROT1("CSmspDeleteQueue::CSmspDeleteQueue()");
   349 
   343 
   350 	iDeleteQueue.SetOffset(_FOFF(CQueuedPDUDelete,iLink));
   344 	iDeleteQueue.SetOffset(_FOFF(CQueuedPDUDelete,iLink));
   351 	} // CSmspDeleteQueue::CSmspDeleteQueue
   345 	} // CSmspDeleteQueue::CSmspDeleteQueue
   352 
   346 
   353 
   347 
   354 /**
   348 /**
   355  *  Completes all items in the queue with KErrCancel
   349  *  Completes all items in the queue with KErrCancel
   356  */
   350  */
   357 void CSmspDeleteQueue::DoCancel()
   351 void CSmspDeleteQueue::DoCancel()
   358 	{
   352 	{
   359 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_DOCANCEL_1, "*** CSmspDeleteQueue::DoCancel");
   353 	LOGSMSPROT1("*** CSmspDeleteQueue::DoCancel");
   360 
   354 
   361 	iSmsPDUDelete->Cancel();
   355 	iSmsPDUDelete->Cancel();
   362 
   356 
   363 	while (!iDeleteQueue.IsEmpty())
   357 	while (!iDeleteQueue.IsEmpty())
   364 		{
   358 		{
   368 	} // CSmspDeleteQueue::DoCancel
   362 	} // CSmspDeleteQueue::DoCancel
   369 
   363 
   370 
   364 
   371 void CSmspDeleteQueue::CompleteFirst(TInt aStatus)
   365 void CSmspDeleteQueue::CompleteFirst(TInt aStatus)
   372 	{
   366 	{
   373 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_COMPLETEFIRST_1, "CSmspDeleteQueue::CompleteFirst()");
   367 	LOGSMSPROT1("CSmspDeleteQueue::CompleteFirst()");
   374 
   368 
   375 	CompleteRequest(iDeleteQueue.First(), aStatus);
   369 	CompleteRequest(iDeleteQueue.First(), aStatus);
   376 	} // CSmspDeleteQueue::CompleteFirst
   370 	} // CSmspDeleteQueue::CompleteFirst
   377 
   371 
   378 
   372 
   379 void CSmspDeleteQueue::CompleteRequest(CQueuedPDUDelete* aQueuedDelete, TInt aStatus)
   373 void CSmspDeleteQueue::CompleteRequest(CQueuedPDUDelete* aQueuedDelete, TInt aStatus)
   380 	{
   374 	{
   381 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_COMPLETEREQUEST_1, "*** CSmspDeleteQueue::CompleteRequest [aStatus=%d aObserver=0x%X IsFirst=%d]", aStatus, (TUint)aQueuedDelete->iObserver, iDeleteQueue.IsFirst(aQueuedDelete));
   375 	LOGSMSPROT4("*** CSmspDeleteQueue::CompleteRequest [aStatus=%d aObserver=0x%X IsFirst=%d]", aStatus, aQueuedDelete->iObserver, iDeleteQueue.IsFirst(aQueuedDelete));
   382 
   376 
   383 	if (aQueuedDelete->iObserver != NULL)
   377 	if (aQueuedDelete->iObserver != NULL)
   384 		CompleteObserver(*aQueuedDelete->iObserver, aStatus);
   378 		CompleteObserver(*aQueuedDelete->iObserver, aStatus);
   385 
   379 
   386 	iDeleteQueue.Remove(*aQueuedDelete);
   380 	iDeleteQueue.Remove(*aQueuedDelete);
   388 	} // CSmspDeleteQueue::CompleteRequest
   382 	} // CSmspDeleteQueue::CompleteRequest
   389 
   383 
   390 
   384 
   391 void CSmspDeleteQueue::CancelObserver(MSmsMessageObserver& aObserver)
   385 void CSmspDeleteQueue::CancelObserver(MSmsMessageObserver& aObserver)
   392 	{
   386 	{
   393 	OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_CANCELOBSERVER_1, "*** CSmspDeleteQueue::CancelObserver [aObserver=0x%X]", &aObserver);
   387 	LOGSMSPROT2("*** CSmspDeleteQueue::CancelObserver [aObserver=0x%X]", &aObserver);
   394 
   388 
   395 	TSglQueIter<CQueuedPDUDelete> iter(iDeleteQueue);
   389 	TSglQueIter<CQueuedPDUDelete> iter(iDeleteQueue);
   396 	CQueuedPDUDelete* queuedDelete = iter;
   390 	CQueuedPDUDelete* queuedDelete = iter;
   397 
   391 
   398 	for (; queuedDelete!=NULL; queuedDelete = iter++)
   392 	for (; queuedDelete!=NULL; queuedDelete = iter++)
   413 	} // CSmspDeleteQueue::CancelObserver
   407 	} // CSmspDeleteQueue::CancelObserver
   414 
   408 
   415 
   409 
   416 CSmspDeleteQueue* CSmspDeleteQueue::NewL(MSmsComm& aSmsComm, const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging, TInt aPriority)
   410 CSmspDeleteQueue* CSmspDeleteQueue::NewL(MSmsComm& aSmsComm, const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging, TInt aPriority)
   417 	{
   411 	{
   418 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_NEWL_1, "CSmspDeleteQueue::NewL()");
   412 	LOGSMSPROT1("CSmspDeleteQueue::NewL()");
   419 
   413 
   420 	CSmspDeleteQueue* self = new (ELeave) CSmspDeleteQueue(aSmsComm, aPriority);
   414 	CSmspDeleteQueue* self = new (ELeave) CSmspDeleteQueue(aSmsComm, aPriority);
   421 	CleanupStack::PushL(self);
   415 	CleanupStack::PushL(self);
   422 	self->ConstructL(aSmsSettings, aSmsMessaging);
   416 	self->ConstructL(aSmsSettings, aSmsMessaging);
   423 	CleanupStack::Pop(self);
   417 	CleanupStack::Pop(self);
   425 	} // CSmspDeleteQueue::NewL
   419 	} // CSmspDeleteQueue::NewL
   426 
   420 
   427 
   421 
   428 void CSmspDeleteQueue::Start()
   422 void CSmspDeleteQueue::Start()
   429 	{
   423 	{
   430 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_START_1, "*** CSmspDeleteQueue::Start [IsActive=%d IsEmpty=%d]", IsActive(), iDeleteQueue.IsEmpty());
   424 	LOGSMSPROT3("*** CSmspDeleteQueue::Start [IsActive=%d IsEmpty=%d]", IsActive(), iDeleteQueue.IsEmpty());
   431 
   425 
   432 	if (!IsActive() && !iDeleteQueue.IsEmpty())
   426 	if (!IsActive() && !iDeleteQueue.IsEmpty())
   433 		{
   427 		{
   434 		CQueuedPDUDelete& queuedDelete = *iDeleteQueue.First();
   428 		CQueuedPDUDelete& queuedDelete = *iDeleteQueue.First();
   435 		iSmsPDUDelete->Start(queuedDelete.iLocationArray, iStatus);
   429 		iSmsPDUDelete->Start(queuedDelete.iLocationArray, iStatus);
   453 	} // CSmspDeleteQueue::~CSmspDeleteQueue
   447 	} // CSmspDeleteQueue::~CSmspDeleteQueue
   454 
   448 
   455 
   449 
   456 void CSmspDeleteQueue::ConstructL(const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging)
   450 void CSmspDeleteQueue::ConstructL(const TSmsSettings& aSmsSettings, RMobileSmsMessaging& aSmsMessaging)
   457 	{
   451 	{
   458 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_CONSTRUCTL_1, "CSmspDeleteQueue::ConstructL()");
   452 	LOGSMSPROT1("CSmspDeleteQueue::ConstructL()");
   459 
   453 
   460 	iSmsPDUDelete = CSmsPDUDelete::NewL(aSmsSettings, aSmsMessaging);
   454 	iSmsPDUDelete = CSmsPDUDelete::NewL(aSmsSettings, aSmsMessaging);
   461 	} // CSmspDeleteQueue::ConstructL
   455 	} // CSmspDeleteQueue::ConstructL
   462 
   456 
   463 
   457 
   464 void CSmspDeleteQueue::CompleteObserver(MSmsMessageObserver& aObserver, TInt aError, const CSmsMessage*)
   458 void CSmspDeleteQueue::CompleteObserver(MSmsMessageObserver& aObserver, TInt aError, const CSmsMessage*)
   465 	{
   459 	{
   466 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPDELETEQUEUE_COMPLETEOBSERVER_1, "*** CSmspDeleteQueue::CompleteObserver [aObserver=0x%X aError=%d IsActive=%d]", (TUint)&aObserver, aError, IsActive());
   460 	LOGSMSPROT4("*** CSmspDeleteQueue::CompleteObserver [aObserver=0x%X aError=%d IsActive=%d]", &aObserver, aError, IsActive());
   467 
   461 
   468 	if (iSmsComm.ObserverIsPresent(aObserver))
   462 	if (iSmsComm.ObserverIsPresent(aObserver))
   469 		{
   463 		{
   470 		aObserver.MessageDeleteCompleted(aError);
   464 		aObserver.MessageDeleteCompleted(aError);
   471 		}
   465 		}
   477 //
   471 //
   478 //
   472 //
   479 
   473 
   480 CSmspSendQueue* CSmspSendQueue::NewL(MSmsComm& aSmsComm, CSmsSegmentationStore& aSegmentationStore, const TSmsSettings& aSmsSettings, const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, RMobileSmsMessaging& aSmsMessaging, TInt aPriority, CSmspSetBearer& aSmspSetBearer)
   474 CSmspSendQueue* CSmspSendQueue::NewL(MSmsComm& aSmsComm, CSmsSegmentationStore& aSegmentationStore, const TSmsSettings& aSmsSettings, const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, RMobileSmsMessaging& aSmsMessaging, TInt aPriority, CSmspSetBearer& aSmspSetBearer)
   481 	{
   475 	{
   482 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPSENDQUEUE_NEWL_1, "CSmspSendQueue::NewL()");
   476 	LOGSMSPROT1("CSmspSendQueue::NewL()");
   483 
   477 
   484 	CSmspSendQueue* self = new (ELeave) CSmspSendQueue(aSmsComm, aPriority);
   478 	CSmspSendQueue* self = new (ELeave) CSmspSendQueue(aSmsComm, aPriority);
   485 	CleanupStack::PushL(self);
   479 	CleanupStack::PushL(self);
   486 	self->ConstructL(aSegmentationStore, aSmsSettings, aMobileSmsCaps, aSmsMessaging, aSmspSetBearer);
   480 	self->ConstructL(aSegmentationStore, aSmsSettings, aMobileSmsCaps, aSmsMessaging, aSmspSetBearer);
   487 	CleanupStack::Pop(self);
   481 	CleanupStack::Pop(self);
   489 	} // CSmspSendQueue::NewL
   483 	} // CSmspSendQueue::NewL
   490 
   484 
   491 
   485 
   492 void CSmspSendQueue::Start()
   486 void CSmspSendQueue::Start()
   493 	{
   487 	{
   494 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPSENDQUEUE_START_1, "*** CSmspSendQueue::Start [IsActive=%d IsEmpty=%d]", IsActive(), iMessageQueue.IsEmpty());
   488 	LOGSMSPROT3("*** CSmspSendQueue::Start [IsActive=%d IsEmpty=%d]", IsActive(), iMessageQueue.IsEmpty());
   495 
   489 
   496 	if (!IsActive() && !iMessageQueue.IsEmpty())
   490 	if (!IsActive() && !iMessageQueue.IsEmpty())
   497 		{
   491 		{
   498 		CQueuedSmsMessage& queuedMessage = *iMessageQueue.First();
   492 		CQueuedSmsMessage& queuedMessage = *iMessageQueue.First();
   499 		iSmsMessageSend->Start(*queuedMessage.iSmsMessage, queuedMessage.iOptions, queuedMessage.iObserver.GetLocalAddress(), iStatus);
   493 		iSmsMessageSend->Start(*queuedMessage.iSmsMessage, queuedMessage.iOptions, queuedMessage.iObserver.GetLocalAddress(), iStatus);
   515 	} // CSmspSendQueue::~CSmspSendQueue
   509 	} // CSmspSendQueue::~CSmspSendQueue
   516 
   510 
   517 
   511 
   518 void CSmspSendQueue::ConstructL(CSmsSegmentationStore& aSegmentationStore, const TSmsSettings& aSmsSettings, const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, RMobileSmsMessaging& aSmsMessaging, CSmspSetBearer& aSmspSetBearer)
   512 void CSmspSendQueue::ConstructL(CSmsSegmentationStore& aSegmentationStore, const TSmsSettings& aSmsSettings, const RMobileSmsMessaging::TMobileSmsCapsV1& aMobileSmsCaps, RMobileSmsMessaging& aSmsMessaging, CSmspSetBearer& aSmspSetBearer)
   519 	{
   513 	{
   520 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPSENDQUEUE_CONSTRUCTL_1, "CSmspSendQueue::ConstructL()");
   514 	LOGSMSPROT1("CSmspSendQueue::ConstructL()");
   521 
   515 
   522 	iSmsMessageSend = CSmsMessageSend::NewL(aSegmentationStore, aSmsSettings, aMobileSmsCaps, aSmsMessaging, Priority(), aSmspSetBearer);
   516 	iSmsMessageSend = CSmsMessageSend::NewL(aSegmentationStore, aSmsSettings, aMobileSmsCaps, aSmsMessaging, Priority(), aSmspSetBearer);
   523 	} // CSmspSendQueue::ConstructL
   517 	} // CSmspSendQueue::ConstructL
   524 
   518 
   525 
   519 
   526 void CSmspSendQueue::CancelRequestIfObserved(MSmsMessageObserver& aObserver)
   520 void CSmspSendQueue::CancelRequestIfObserved(MSmsMessageObserver& aObserver)
   527 	{
   521 	{
   528 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPSENDQUEUE_CANCELREQUESTIFOBSERVED_1, "CSmspSendQueue::CancelRequestIfObserved()");
   522 	LOGSMSPROT1("CSmspSendQueue::CancelRequestIfObserved()");
   529 
   523 
   530 	if (IsActive() && &iMessageQueue.First()->iObserver == &aObserver)
   524 	if (IsActive() && &iMessageQueue.First()->iObserver == &aObserver)
   531 		{
   525 		{
   532 		iSmsMessageSend->Cancel();
   526 		iSmsMessageSend->Cancel();
   533 		}
   527 		}
   534 	} // CSmspSendQueue::CancelRequestIfObserved
   528 	} // CSmspSendQueue::CancelRequestIfObserved
   535 
   529 
   536 
   530 
   537 void CSmspSendQueue::CompleteObserver(MSmsMessageObserver& aObserver, TInt aError, const CSmsMessage*)
   531 void CSmspSendQueue::CompleteObserver(MSmsMessageObserver& aObserver, TInt aError, const CSmsMessage*)
   538 	{
   532 	{
   539 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPSENDQUEUE_COMPLETEOBSERVER_1, "*** CSmspSendQueue::CompleteObserver [aObserver=0x%X aError=%d IsActive=%d]", (TUint)&aObserver, aError, IsActive());
   533 	LOGSMSPROT4("*** CSmspSendQueue::CompleteObserver [aObserver=0x%X aError=%d IsActive=%d]", &aObserver, aError, IsActive());
   540 
   534 
   541 	if (iSmsComm.ObserverIsPresent(aObserver))
   535 	if (iSmsComm.ObserverIsPresent(aObserver))
   542 		{
   536 		{
   543 		aObserver.MessageSendCompleted(aError);
   537 		aObserver.MessageSendCompleted(aError);
   544 		}
   538 		}
   545 	} // CSmspSendQueue::CompleteObserver
   539 	} // CSmspSendQueue::CompleteObserver
   546 
   540 
   547 
   541 
   548 void CSmspSendQueue::Complete(TInt aStatus)
   542 void CSmspSendQueue::Complete(TInt aStatus)
   549 	{
   543 	{
   550 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPSENDQUEUE_COMPLETE_1, "CSmspSendQueue::Complete()");
   544 	LOGSMSPROT1("CSmspSendQueue::Complete()");
   551 
   545 
   552 	iSmsComm.MessageSendCompleted(aStatus);
   546 	iSmsComm.MessageSendCompleted(aStatus);
   553 	} // CSmspSendQueue::Complete
   547 	} // CSmspSendQueue::Complete
   554 
   548 
   555 
   549 
   559 //
   553 //
   560 //
   554 //
   561 
   555 
   562 CSmspWriteQueue* CSmspWriteQueue::NewL(MSmsComm& aSmsComm, const TSmsSettings& aSmsSettings, RMobilePhone& aGsmPhone, CSmsSegmentationStore& aSegmentationStore, TInt aPriority)
   556 CSmspWriteQueue* CSmspWriteQueue::NewL(MSmsComm& aSmsComm, const TSmsSettings& aSmsSettings, RMobilePhone& aGsmPhone, CSmsSegmentationStore& aSegmentationStore, TInt aPriority)
   563 	{
   557 	{
   564 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPWRITEQUEUE_NEWL_1, "CSmspWriteQueue::NewL()");
   558 	LOGSMSPROT1("CSmspWriteQueue::NewL()");
   565 
   559 
   566 	CSmspWriteQueue* self = new (ELeave) CSmspWriteQueue(aSmsComm, aPriority);
   560 	CSmspWriteQueue* self = new (ELeave) CSmspWriteQueue(aSmsComm, aPriority);
   567 	CleanupStack::PushL(self);
   561 	CleanupStack::PushL(self);
   568 	self->ConstructL(aSmsSettings, aGsmPhone, aSegmentationStore);
   562 	self->ConstructL(aSmsSettings, aGsmPhone, aSegmentationStore);
   569 	CleanupStack::Pop(self);
   563 	CleanupStack::Pop(self);
   571 	} // CSmspWriteQueue::NewL
   565 	} // CSmspWriteQueue::NewL
   572 
   566 
   573 
   567 
   574 void CSmspWriteQueue::Start()
   568 void CSmspWriteQueue::Start()
   575 	{
   569 	{
   576 	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPWRITEQUEUE_START_1, "*** CSmspWriteQueue::Start [IsActive=%d IsEmpty=%d]", IsActive(), iMessageQueue.IsEmpty());
   570 	LOGSMSPROT3("*** CSmspWriteQueue::Start [IsActive=%d IsEmpty=%d]", IsActive(), iMessageQueue.IsEmpty());
   577 
   571 
   578 	if (!IsActive() && !iMessageQueue.IsEmpty())
   572 	if (!IsActive() && !iMessageQueue.IsEmpty())
   579 		{
   573 		{
   580 		CQueuedSmsMessage& queuedMessage = *iMessageQueue.First();
   574 		CQueuedSmsMessage& queuedMessage = *iMessageQueue.First();
   581 		iSmsMessageWrite->Start(queuedMessage.iSmsMessage, iStatus);
   575 		iSmsMessageWrite->Start(queuedMessage.iSmsMessage, iStatus);
   597 	} // CSmspWriteQueue::~CSmspWriteQueue
   591 	} // CSmspWriteQueue::~CSmspWriteQueue
   598 
   592 
   599 
   593 
   600 void CSmspWriteQueue::ConstructL(const TSmsSettings& aSmsSettings, RMobilePhone& aGsmPhone, CSmsSegmentationStore& aSegmentationStore)
   594 void CSmspWriteQueue::ConstructL(const TSmsSettings& aSmsSettings, RMobilePhone& aGsmPhone, CSmsSegmentationStore& aSegmentationStore)
   601 	{
   595 	{
   602 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPWRITEQUEUE_CONSTRUCTL_1, "CSmspWriteQueue::ConstructL()");
   596 	LOGSMSPROT1("CSmspWriteQueue::ConstructL()");
   603 
   597 
   604 	iSmsMessageWrite = CSmsMessageWrite::NewL(iSmsComm, aSmsSettings, aGsmPhone, aSegmentationStore);
   598 	iSmsMessageWrite = CSmsMessageWrite::NewL(iSmsComm, aSmsSettings, aGsmPhone, aSegmentationStore);
   605 	} // CSmspWriteQueue::ConstructL
   599 	} // CSmspWriteQueue::ConstructL
   606 
   600 
   607 
   601 
   608 void CSmspWriteQueue::CancelRequestIfObserved(MSmsMessageObserver& aObserver)
   602 void CSmspWriteQueue::CancelRequestIfObserved(MSmsMessageObserver& aObserver)
   609 	{
   603 	{
   610 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPWRITEQUEUE_CANCELREQUESTIFOBSERVED_1, "CSmspWriteQueue::CancelRequestIfObserved()");
   604 	LOGSMSPROT1("CSmspWriteQueue::CancelRequestIfObserved()");
   611 
   605 
   612 	if (IsActive() && &iMessageQueue.First()->iObserver == &aObserver)
   606 	if (IsActive() && &iMessageQueue.First()->iObserver == &aObserver)
   613 		{
   607 		{
   614 		iSmsMessageWrite->Cancel();
   608 		iSmsMessageWrite->Cancel();
   615 		}
   609 		}
   616 	} // CSmspWriteQueue::CancelRequestIfObserved
   610 	} // CSmspWriteQueue::CancelRequestIfObserved
   617 
   611 
   618 
   612 
   619 void CSmspWriteQueue::CompleteObserver(MSmsMessageObserver& aObserver, TInt aError, const CSmsMessage* aSmsMessage)
   613 void CSmspWriteQueue::CompleteObserver(MSmsMessageObserver& aObserver, TInt aError, const CSmsMessage* aSmsMessage)
   620 	{
   614 	{
   621 	OstTraceDefExt3(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPWRITEQUEUE_COMPLETEOBSERVER_1, "*** CSmspWriteQueue::CompleteObserver [aObserver=0x%X aError=%d IsActive=%d]", (TUint)&aObserver, aError, IsActive());
   615 	LOGSMSPROT4("*** CSmspWriteQueue::CompleteObserver [aObserver=0x%X aError=%d IsActive=%d]", &aObserver, aError, IsActive());
   622 	if (iSmsComm.ObserverIsPresent(aObserver))
   616 	if (iSmsComm.ObserverIsPresent(aObserver))
   623 		{
   617 		{
   624 		aObserver.MessageWriteCompleted(aError, aSmsMessage);
   618 		aObserver.MessageWriteCompleted(aError, aSmsMessage);
   625 		}
   619 		}
   626 	} // CSmspWriteQueue::CompleteObserver
   620 	} // CSmspWriteQueue::CompleteObserver
   627 
   621 
   628 
   622 
   629 void CSmspWriteQueue::Complete(TInt)
   623 void CSmspWriteQueue::Complete(TInt)
   630 	{
   624 	{
   631 	OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSPWRITEQUEUE_COMPLETE_1, "CSmspWriteQueue::Complete()");
   625 	LOGSMSPROT1("CSmspWriteQueue::Complete()");
   632 
   626 
   633 	//Do Nothing :o)
   627 	//Do Nothing :o)
   634 	} // CSmspWriteQueue::Complete
   628 	} // CSmspWriteQueue::Complete
   635 
   629