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

📄 mguardscreqhandler.cpp

📁 symbian s60手机上的短信拦截源代码。
💻 CPP
字号:
/*
* ============================================================================
*  Name     : MGuardScReqHandler.cpp
*  Part of  : MGuardCmdHandler
*  Created  : 19.08.2007 by xueyw
*  Description:
*  Version  :
*  Copyright: 
* ============================================================================
*/

// INCLUDE FILES
#include <e32svr.h>
#include <e32base.h>
#include "MGuardScReqHandler.h"
#include "MGuardScCommon.h"
#include "MGuardScClient.pan"


// ========================= MEMBER FUNCTIONS ==================================

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
CMGuardScReqHandler* CMGuardScReqHandler::NewL( MMGuardScObserver& aObserver )
{
	CMGuardScReqHandler* self = NewLC( aObserver );
	CleanupStack::Pop( self );
	return( self ) ;
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
CMGuardScReqHandler* CMGuardScReqHandler::NewLC( MMGuardScObserver& aObserver )
{
	CMGuardScReqHandler* self = new ( ELeave ) CMGuardScReqHandler( aObserver );
	CleanupStack::PushL( self );
	self->ConstructL();
	return self;
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CMGuardScReqHandler::ConstructL()
{
	User::LeaveIfError( iSession.Connect() );
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::CMGuardScReqHandler()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
CMGuardScReqHandler::CMGuardScReqHandler( MMGuardScObserver& aObserver ): CActive( EPriorityStandard ) , iObserver( aObserver )
{
	CActiveScheduler::Add( this );
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::~CMGuardScReqHandler()
// Destructor.
// -----------------------------------------------------------------------------
//
CMGuardScReqHandler::~CMGuardScReqHandler()
{
	Cancel(); // Causes call to DoCancel()
	iSession.Close();
}

void CMGuardScReqHandler::RequestUnlock()
{
	if ( !IsActive() )
	{
		iSession.RequestUnlock( iTime, iStatus );
		SetActive();
	}
}


// -----------------------------------------------------------------------------
// CMGuardScReqHandler::RequestLock()
// Sends a request to the server for an update to the time.
// -----------------------------------------------------------------------------
//
void CMGuardScReqHandler::RequestLock()
{
	if ( !IsActive() )
	{
		iSession.RequestLock( iTime, iStatus );
		SetActive();
	}
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::CancelRequest()
// Cancels an outstanding request.
// -----------------------------------------------------------------------------
//
void CMGuardScReqHandler::CancelRequest()
{
	Cancel() ; // Causes call to DoCancel()
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::RunL()
// Invoked to handle responses from the server.
// -----------------------------------------------------------------------------
//
void CMGuardScReqHandler::RunL()
{
	switch ( iStatus.Int() )
	{
	case EMGuardServRequestLockComplete:
	case EMGuardServRequestUnlockComplete:
		// The server has completed the request, signalled the client
		// thread and the clients active scheduler runs the active object.
		// Now do something with it
//		iObserver.HandleTimeUpdate();
//		RequestLock();   // Add this line to make the clock keep ticking
		CActiveScheduler::Stop();
		break ;

	case KErrCancel:
		// The request was canceled
		CActiveScheduler::Stop();
		break ;

	case KErrNotReady:
		// We requested a new time before completing the previous request

	default:
		User::Panic( KMGuardScClient, EMGuardScClientBadState ); // Unexpected error
		break;
	}
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::DoCancel()
// Cancels any outstanding operation.
// -----------------------------------------------------------------------------
//
void CMGuardScReqHandler::DoCancel()
{
	iSession.CancelRequestLock();
}

// -----------------------------------------------------------------------------
// CMGuardScReqHandler::Time() const
// Gets a copy of the last time received from the server.
// -----------------------------------------------------------------------------
//
TTime CMGuardScReqHandler::Time() const
{
	return iTime;
}

// End of File

⌨️ 快捷键说明

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