/** Utility function that updates message index entry fields to reflect the message's scheduling. @param aRef Scheduler item. @param aInfo Scheduler task information. @param aTime Schedule start time. @param aFinalState Sending state flag. @param aEntry On return, updated index entry. @param aData On return, populated messaging scheduling data. */ EXPORT_C void CMsvScheduleSend::UpdateEntryAfterSchedule(const TSchedulerItemRef& aRef, const TTaskInfo& aInfo, const TTime& aTime, TInt aFinalState, TMsvEntry& aEntry, TMsvEntryScheduleData& aData) { aEntry.SetScheduled(ETrue); aEntry.SetFailed(EFalse); aEntry.SetSendingState(aFinalState); aEntry.SetConnected(EFalse); aEntry.iDate = aTime; aData.iRef = aRef; aData.iTaskId = aInfo.iTaskId; }
void CMsgImOutboxSend::CleanUpOnDestructL() { if(!iSetDisconnected) { DisconnectUnsentMessagesL(); } if (iStatus.Int() != KErrNone) { if ((iCurrentMessageNo != -1) && (iCurrentMessageNo<iTotalMessages)) { TInt err=iServerEntry.SetEntry(iEntrySelection.At(iCurrentMessageNo)); if(err == KErrNotFound) { User::Leave(KErrNotFound); } __ASSERT_DEBUG(err == KErrNone, gPanic(EImsmServerError)); TMsvEntry entry = iServerEntry.Entry(); RestoreBccRecipientsToHeaderL(); // Set date info and completion data..update the iServerEntry with this data.. TInt errorCode = (TSmtpSessionError)iStatus.Int(); entry.iDate.UniversalTime(); if(errorCode!=KErrCancel) { entry.SetFailed(errorCode != KErrNone); entry.SetSendingState(errorCode==KErrNone? KMsvSendStateSent: KMsvSendStateWaiting); //set it to send agian. if (errorCode) entry.iError=CalculateError(errorCode); } else { entry.SetFailed(EFalse); entry.SetSendingState(KMsvSendStateSuspended); entry.iError=KErrNone; } entry.SetConnected(EFalse); #ifdef _DEBUG err = #endif iServerEntry.ChangeEntry(entry); __ASSERT_DEBUG(err == KErrNone, gPanic(EImsmServerError)); } } }
void CMsgImOutboxSend::SetLastMessageStatusL(const TTime& aTimeNow, TInt aCompletionReason) { // If its the first message && there are messages to be sent change status.. if (iTotalMessages>0) { iProgress.SetStatus(EMsgOutboxProgressSending); } // Store the file progress for the last file sent. This will be used in // the situation where we cancel the operation to do a bearer migration // so that the progress information is for the last file completed as // opposed to the one we have just cancelled. if (iSession) { iProgress.iSendFileProgress = iSession->FileProgress(); } // Fill in the iServerEntry details with data from the last message // IMCV may had left this inconsistent... so reset the iServerEntry // explicitly.... if (iCurrentMessageNo != -1) { TInt err; err = iServerEntry.SetEntry(iEntrySelection.At(iCurrentMessageNo)); __ASSERT_DEBUG( err == KErrNone, gPanic(EImsmServerError)); TMsvEntry entry = iServerEntry.Entry(); // Set date info and completion data..update the iServerEntry with this data.. entry.iDate=aTimeNow; if(aCompletionReason!=KErrCancel) { entry.SetFailed(aCompletionReason != KErrNone); entry.SetSendingState(aCompletionReason==KErrNone? KMsvSendStateSent: KMsvSendStateWaiting); //set it to send agian. if (aCompletionReason) entry.iError=CalculateError(aCompletionReason); } else { entry.SetFailed(EFalse); entry.SetSendingState(KMsvSendStateSuspended); entry.iError=KErrNone; } // if (aCompletionReason<=KErrNone) // { // ignore any +ve errors which may leak from the SMTP code // entry.iError=aCompletionReason; // entry.SetSendingState(aCompletionReason==KErrNone? KMsvSendStateSent: KMsvSendStateWaiting); //set it to send agian. // } RestoreBccRecipientsToHeaderL(); entry.SetConnected(EFalse); err = iServerEntry.ChangeEntry(entry); __ASSERT_DEBUG( err == KErrNone, gPanic(EImsmServerError)); UpdateSummaryInfo(aCompletionReason); // If it went move to the "Sent" folder.. if(!entry.Failed() && aCompletionReason!=KErrCancel) { TMsvId id = entry.Id(); err = iServerEntry.SetEntry(KMsvSentEntryIdValue); if(err == KErrNone) { err = iServerEntry.SetEntry(KMsvGlobalOutBoxIndexEntryId); if(err == KErrNone) { // Move it.... err = iServerEntry.MoveEntryWithinService(id, KMsvSentEntryIdValue); } } } } }