--- a/startupservices/Startup/syserrcmd/tsrc/syserrcmdtest/inc/asyncrequesthandler.h Thu Aug 19 10:05:08 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 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:
- *
- */
-
-#ifndef ASYNCREQUESTHANDLER_H
-#define ASYNCREQUESTHANDLER_H
-
-// SYSTEM INCLUDE FILES
-#include <e32base.h>
-
-// DATA TYPES
-_LIT( KPanicCat, "ASYNCREQUESTHANDLER" );
-
-/** Panic codes */
-enum TArhPanicCodes
- {
- EArhNone,
- EArhRequestPending
- };
-
-// CLASS DECLARATION
-
-/**
- * A template class for handling asynchronous requests.
- *
- * @lib None.
- * @since S60 TB9.2
- */
-template <class T>
-NONSHARABLE_CLASS( CAsyncRequestHandler ): public CActive
- {
-public:
-
- // TYPE DEFINTIONS
-
- /** HandleIssueRequest callback */
- typedef void ( T::*HandleIssueRequest )( TRequestStatus& );
-
- /** HandleRunL callback */
- typedef void ( T::*HandleRunL )( TInt );
-
- /** HandleRunError callback */
- typedef TInt ( T::*HandleRunError )( TInt );
-
- /** HandleDoCancel callback */
- typedef void ( T::*HandleDoCancel )();
-
- // DATA TYPES
-
- /** Request type */
- enum TAsyncRequestType
- {
- ERequestOneShot,
- ERequestContinuous
- };
-
-public:
-
- /**
- * Symbian two phased constructor.
- *
- * @since S60 TB9.2
- * @param None.
- * @return CAsyncRequestHandler*
- */
- static CAsyncRequestHandler* NewL( T& aPtr,
- HandleIssueRequest aHandleIssueRequest,
- HandleRunL aHandleRunL,
- HandleRunError aHandleRunError,
- HandleDoCancel aHandleDoCancel,
- TAsyncRequestType aType = ERequestContinuous )
- {
- CAsyncRequestHandler* self = CAsyncRequestHandler::NewLC( aPtr,
- aHandleIssueRequest,
- aHandleRunL,
- aHandleRunError,
- aHandleDoCancel,
- aType );
- CleanupStack::Pop( self );
- return self;
- }
-
- /**
- * Symbian two phased constructor.
- * Instance is left in the cleanup stack.
- *
- * @since S60 TB9.2
- * @param None.
- * @return CAsyncRequestHandler*
- */
- static CAsyncRequestHandler* NewLC( T& aPtr,
- HandleIssueRequest aHandleIssueRequest,
- HandleRunL aHandleRunL,
- HandleRunError aHandleRunError,
- HandleDoCancel aHandleDoCancel,
- TAsyncRequestType aType = ERequestContinuous )
- {
- CAsyncRequestHandler* self = new CAsyncRequestHandler( aPtr,
- aHandleIssueRequest,
- aHandleRunL,
- aHandleRunError,
- aHandleDoCancel,
- aType );
- CleanupStack::PushL( self );
- return self;
- }
-
- /**
- * C++ destructor.
- */
- virtual ~CAsyncRequestHandler()
- {
- Cancel();
- }
-
-public: // New methods
-
- /**
- * Issues a new request.
- * Panic will occur if there already is a request pending.
- *
- * @since TB9.2
- * @param None.
- * @return None.
- */
- void IssueRequest()
- {
- __ASSERT_DEBUG( !IsActive(),
- User::Panic( KPanicCat, EArhRequestPending ) );
-
- // Call the HandleIssueRequest from the template class and set active
- ( iPtr.*iHandleIssueRequest )( iStatus );
- SetActive();
- }
-
-protected: // From base classes
-
- // @see CActive
- void RunL()
- {
- // Check result and issue request again
- TInt status = iStatus.Int();
- if( iType == ERequestContinuous )
- {
- IssueRequest();
- }
-
- // Call the HandleRunL from the template class
- ( iPtr.*iHandleRunL )( status );
- }
-
- // @see CActive
- TInt RunError( TInt aError )
- {
- // Call the HandleRunError from the template class
- TInt err = ( iPtr.*iHandleRunError )( aError );
- return err;
- }
-
- // @see CActive
- void DoCancel()
- {
- // Call the HandleDoCancel from the template class
- ( iPtr.*iHandleDoCancel )();
- }
-
-private:
-
- CAsyncRequestHandler( T& aPtr,
- HandleIssueRequest aHandleIssueRequest,
- HandleRunL aHandleRunL,
- HandleRunError aHandleRunError,
- HandleDoCancel aHandleDoCancel,
- TAsyncRequestType aType = ERequestContinuous ):
- CActive( CActive::EPriorityStandard ),
- iPtr( aPtr ),
- iHandleIssueRequest( aHandleIssueRequest ),
- iHandleRunL( aHandleRunL ),
- iHandleRunError( aHandleRunError ),
- iHandleDoCancel( aHandleDoCancel ),
- iType( aType )
- {
- CActiveScheduler::Add( this );
- }
-
-private: // Data
-
- /** Pointer to the template class */
- T& iPtr;
-
- /** HandleIssueRequest function pointer */
- HandleIssueRequest iHandleIssueRequest;
-
- /** HandleRunL function pointer */
- HandleRunL iHandleRunL;
-
- /** HandleRunError function pointer */
- HandleRunError iHandleRunError;
-
- /** HandleDoCancel function pointer */
- HandleDoCancel iHandleDoCancel;
-
- /** Request type */
- TAsyncRequestType iType;
- };
-
-#endif // ASYNCREQUESTHANDLER_H