smsdatagramsender.cpp

来自「经过改造的EasyDgm」· C++ 代码 · 共 87 行

CPP
87
字号
/*
* ==============================================================================
*  Name        : smsdatagramsender.cpp
*  Part of     : 
*  Interface   : 
*  Description : 
*  Version     : 
*
*  Copyright (c) 2007 Symbian Ltd.  All rights reserved.
* ==============================================================================
*/

// INCLUDE FILES
#include "smsdatagramsender.h"

const TUint KSMSMaxBufferSize = 256;
const TUid KSMSDatagramServiceImplementationUID = {0x101FA9C3};

_LIT(KPanicSMSSender,"SMSSender");

CSmsDatagramSender* CSmsDatagramSender::NewL(MSmsDatagramSenderObserver& aMsgOvserver)
	{
	CSmsDatagramSender* self = new (ELeave) CSmsDatagramSender(aMsgOvserver);
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop();
	return self;	
	}
	

void CSmsDatagramSender::ConstructL()
	{
    CActiveScheduler::Add(this) ; // add to active scheduler
	}


CSmsDatagramSender::CSmsDatagramSender(MSmsDatagramSenderObserver& aMsgOvserver)
		: CActive(EPriorityStandard), iMsgObserver(aMsgOvserver)
	{	
	}
	

CSmsDatagramSender::~CSmsDatagramSender()
	{
	Cancel();
	delete iDatagram;
	delete iSendService;
	}

	
void CSmsDatagramSender::SendAsyncL(const TDesC& aMessage, const TDesC8& aPhoneNumber)
	{
	__ASSERT_ALWAYS(!IsActive(),User::Panic(KPanicSMSSender,KErrInUse));

	delete iDatagram;
	iDatagram = NULL;
	iDatagram = CDatagram::NewL(aMessage, aPhoneNumber);

	// and now send it asynchronously
	delete iSendService;
	iSendService=NULL;
	iSendService = CDatagramService::NewL(KSMSDatagramServiceImplementationUID);
	iSendService->SendL(iDatagram, iStatus);
	SetActive();	
	}
		
void CSmsDatagramSender::DoCancel()
	{
	delete iSendService;
	iSendService=NULL;
	}
	
		
void CSmsDatagramSender::RunL()
	{
	User::LeaveIfError(iStatus.Int()); 
	
	TBuf<KSMSMaxBufferSize> sendBuf;
	sendBuf.Copy(iDatagram->GetData());
	iMsgObserver.MsgSentL(sendBuf);
	}



// End of File

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?