📄 mguardscreqhandler2.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 + -