diff -r 238255e8b033 -r 84d9eb65b26f messagingappbase/smsmtm/servermtm/src/SMSRecipientSend.cpp --- a/messagingappbase/smsmtm/servermtm/src/SMSRecipientSend.cpp Fri Apr 16 14:56:15 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -// Copyright (c) 1999-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 -#include -#include -#include -#include -#include -#include -#include - -#include "SMSRecipientSend.h" -#include "SMSSSEND.H" -#include "SMSSPAN.H" -#include -#include - -CSmsRecipientSend::~CSmsRecipientSend() - { - delete iLogger; - - if (iSocket.SubSessionHandle()) - { - iSocket.Close(); - } - - if (iSession.Handle()) - { - iSession.Close(); - } - } - -void CSmsRecipientSend::Start(TRequestStatus& aStatus, const TMsvEntry& aEntry, CSmsHeader& aHeader, CSmsNumber& aRecipient) - { - __ASSERT_DEBUG(iState==ESmsRecipientSendWaiting,Panic(KSmssPanicUnexpectedState)); - - Queue(aStatus); - iEntry = aEntry; - iHeader = &aHeader; - iRecipient = &aRecipient; - - TRAPD(err, StartL()); - - if (err) - Complete(err); - } - -CSmsRecipientSend::CSmsRecipientSend(TSmsProgress& aProgress, RFs& aFs, CMsvServerEntry& aServerEntry) -: CSmssActive(aFs, aServerEntry, KSmsSessionPriority), - iProgress(aProgress), - iState(ESmsRecipientSendWaiting) - { - CActiveScheduler::Add(this); - } - -void CSmsRecipientSend::ConstructL() - { - iLogger = CSmsEventLogger::NewL(iFs); - } - -void CSmsRecipientSend::DoRunL() - { - switch (iState) - { - case ESmsRecipientSendGetLogEvent: - { - if (iLogger->iStatus == KErrNone) - { - //no log error - ChangeLogEvent(); - } - else - { - //Log error has occurred - if (-(iLogger->iStatus.Int()) == KErrNotFound) - { - AddLogEvent(); - } - else - { - SendMessageL(); - } - } - break; - } - case ESmsRecipientSendAddLogEvent: - { - TLogId logId = KLogNullId; - - if (iLogger->iStatus == KErrNone) - { - //No log error has occurred - logId = iLogger->Event().Id(); - } - - iHeader->Message().SetLogServerId(logId); - iRecipient->SetLogId(logId); - //do not break here... - } - case ESmsRecipientSendChangeLogEvent: - { - SendMessageL(); - break; - } - case ESmsRecipientSendSendingMessage: - { - iState = ESmsRecipientSendWaiting; - break; - } - case ESmsRecipientSendWaiting: - default: - Panic(KSmssPanicUnexpectedState); - } - } - -void CSmsRecipientSend::DoComplete(TInt& aStatus) - { - //Set the state to waiting - iState = ESmsRecipientSendWaiting; - iHeader = NULL; - iRecipient = NULL; - iEntry = TMsvEntry(); - iProgress.iError = aStatus; - - aStatus = KErrNone; - - SMSSLOG(FLogFormat(_L8("CSmsRecipientSend completed with %d"), iProgress.iError)); - } - -void CSmsRecipientSend::GetDefaultSendBearerL(TInt aBioType, TBioMsgIdType aBearer, TBioMsgId& rBioMsgId) const - { - CBIODatabase* bdb = CBIODatabase::NewL(iFs); - CleanupStack::PushL(bdb); - - TInt index = 0; - TUid uid; - uid.iUid = aBioType; - bdb->GetBioIndexWithMsgIDL(uid, index); //leaves with KErrNotFound if aBioType does not exist in bdb - - const CArrayFix* bioIDs = bdb->BIOEntryLC(index); - const TInt count = bioIDs->Count(); - TBool found = EFalse; - - for (TInt i = 0; !found && i < count; i++) //order important - { - rBioMsgId = bioIDs->At(i); - found = (rBioMsgId.iType == aBearer && AcceptBioMsgId(rBioMsgId)); - } - - CleanupStack::PopAndDestroy(2); //bdb, bioIDs - - if (!found) - User::Leave(KErrNotFound); - } - -TInt CSmsRecipientSend::AcceptBioType(TInt aBioType, TBioMsgIdType aBearer) const - { - TBioMsgId bioMsgId; - TRAPD(err, GetDefaultSendBearerL(aBioType, aBearer, bioMsgId)); - return err; - } - -void CSmsRecipientSend::GetLogEvent() - { - TLogId id = iRecipient->LogId(); - iHeader->Message().SetLogServerId(id); - iLogger->GetEvent(iStatus, id); - SetActive(); - iState = ESmsRecipientSendGetLogEvent; - } - -void CSmsRecipientSend::AddLogEvent() - { - TInt logStatus = R_LOG_DEL_NONE; - iHeader->Message().SetLogServerId(KLogNullId); - - TLogSmsPduData data; - // Initialise the data members - data.iType = 0; - data.iTotal = 0; - data.iSent = 0; - data.iDelivered = 0; - data.iFailed = 0; - data.iReceived = 0; - - iLogger->AddEvent(iStatus, iHeader->Message(), data, &logStatus); - SetActive(); - iState = ESmsRecipientSendAddLogEvent; - } - -void CSmsRecipientSend::ChangeLogEvent() - { - TInt logStatus = R_LOG_DEL_NONE; - TLogSmsPduData data; - data.iType = 0; - data.iTotal = 0; - data.iSent = 0; - data.iDelivered = 0; - data.iFailed = 0; - data.iReceived = 0; - iLogger->ChangeEvent(iStatus, iHeader->Message(), data, &logStatus); - SetActive(); - iState = ESmsRecipientSendChangeLogEvent; - } - -void CSmsRecipientSend::DoSmssCancel() - { - switch (iState) - { - case ESmsRecipientSendGetLogEvent: - case ESmsRecipientSendAddLogEvent: - case ESmsRecipientSendChangeLogEvent: - SMSSLOG(FLogFormat(_L8("CSmsRecipientSend::DoSmssCancel() cancelling logging for msg %d"), iEntry.Id())); - iLogger->Cancel(); - break; - case ESmsRecipientSendSendingMessage: - DoCancelSendingMessage(); - break; - default: - break; - } - }