⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smsdatagramreceiver.cpp

📁 symbian下面收发消息的APIs
💻 CPP
字号:
/*
* ==============================================================================
*  Name        : smsdatagramreceiver.cpp
*  Part of     : 
*  Interface   : 
*  Description : 
*  Version     : 
*
*  Copyright (c) 2007 Symbian Ltd.  All rights reserved.
* ==============================================================================
*/

// INCLUDE FILES
#include "smsdatagramreceiver.h"
#include <e32std.h>

const TUint KSMSMaxBufferSize = 256;
const TUid KSMSDatagramServiceImplementationUID = {0x101FA9C3};
_LIT(KPanicSMSReceiver, "SMSRECEIVER");

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

void CSmsDatagramReceiver::ConstructL()
	{
	// Create our buffer to store received data
	iSmsBuf = HBufC8::NewMaxL(KSMSMaxBufferSize);
		
	// Create the Datagram we wish to populate.
	iDatagram = CDatagram::NewL(*iSmsBuf);	
    CActiveScheduler::Add(this) ; // add to active scheduler
    
	}


CSmsDatagramReceiver::CSmsDatagramReceiver(MSmsDatagramReceiverObserver& aMsgOvserver)
		: CActive(EPriorityStandard), iMsgObserver(aMsgOvserver)
	{	
	}
	

CSmsDatagramReceiver::~CSmsDatagramReceiver()
	{
	Cancel();
	delete iSmsBuf;
	delete iDatagram;
	delete iReceiveService;
	delete iMatchPattern;	
	}


void CSmsDatagramReceiver::SetMatchPatternL(const TDesC8& aMatchPattern)
	{
	__ASSERT_ALWAYS(!IsActive(),User::Panic(KPanicSMSReceiver,KErrInUse));
	delete iMatchPattern;
	iMatchPattern=NULL;
	iMatchPattern = HBufC8::NewL(aMatchPattern.Length());
	*iMatchPattern=	aMatchPattern;
	}

	
void CSmsDatagramReceiver::StartReceiveL()
	{
	__ASSERT_ALWAYS(!IsActive(),User::Panic(KPanicSMSReceiver,KErrInUse));
	Cancel();
	//Check match pattern. Return if is active, otherwise restart
	delete iReceiveService;
	iReceiveService=NULL;
	iReceiveService = CDatagramService::NewL(KSMSDatagramServiceImplementationUID);
	iReceiveService->ReceiveL(iDatagram, *iMatchPattern, iStatus);
	SetActive();
	}
		
void CSmsDatagramReceiver::DoCancel()
	{
	delete iReceiveService;
	iReceiveService=NULL;	//ensure no double deletion
	}
	
		
void CSmsDatagramReceiver::RunL()
	{
	User::LeaveIfError(iStatus.Int());
	TBuf<KSMSMaxBufferSize> recvBuf;
	recvBuf.Copy(iDatagram->GetData());
	iMsgObserver.MsgReceivedL(recvBuf);
	StartReceiveL();	
	}




// End of File

⌨️ 快捷键说明

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