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