diff -r 000000000000 -r b497e44ab2fc terminalsecurity/SCP/SCPServer/inc/SCPSession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/terminalsecurity/SCP/SCPServer/inc/SCPSession.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,333 @@ +/* +* Copyright (c) 2000 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: Implementation of terminalsecurity components +* +*/ + + +#ifndef SCPSESSION_H +#define SCPSESSION_H + +// INCLUDES +#include +#include +#include + +#include "SCPServerInterface.h" +#include "SCPTimer.h" + +#include +// FORWARD DECLARATIONS +class CSCPServer; +class CSCPLockNotificationEventHandler; +class CSCPLockSettingEventHandler; +class RTelServer; +class RMobilePhone; + +// CLASS DECLARATION + +/** +* The class corresponding to a single SCP server session. +*/ +class CSCPSession : public CSession2, public MSCPTimeoutHandler + { + public: // Methods + + // Constructors and destructor + + /** + * Static constructor. + */ + static CSCPSession* NewL( CSCPServer& aServer ); + + /** + * Static constructor, that leaves the pointer to the cleanup stack. + */ + static CSCPSession* NewLC( CSCPServer& aServer ); + + /** + * Destructor. + */ + virtual ~CSCPSession(); + + // New methods + /** + * Check if the given command is in progress + * @param aCommand The command that is to be checked for + * @return TBool: The command status + *
Name of return value: Operation state + *
Type of return value: TBool + *
Range of return value: ETrue/EFalse + *
Contents of return value: A truth value indicating + *
the operation state. + */ + TBool IsOperationInProgress( TSCPAdminCommand aCommand ); + + /** + * Acknowledges the given operation, and returns if it was awaited + * @param aCommand The command that was acknowledged + * @return TBool: The wait status + *
Name of return value: Wait status + *
Type of return value: TBool + *
Range of return value: ETrue/EFalse + *
Contents of return value: A truth value indicating if the + *
acknowledgement was awaited. + */ + TBool AcknowledgeOperation( TSCPAdminCommand aCommand ); + + /** + * Callback method, indicates the lock operation is complete + */ + void LockOperationCompleted(); + + /** + * Informs that a lock operation is pending, waiting for an acknowledgement. + * @param aCommand The command that is pending + * @param aStatus The RequestStatus-variable that is to be signalled on completion. + */ + void LockOperationPending( TSCPAdminCommand aCommand, + TRequestStatus* aStatus ); + + /** + * Changes the DOS side lock setting utilizing the password stored on the server. + * @param aLocked The new state for the DOS lock setting + * @param aAutolock ETrue if Autolock should be activated on success + */ + void SetDOSLockSettingL( TBool aLocked, + TBool aAutolock, + const RMessage2 &aMessage ); + + /** + * Returns the state of the SMS Lock component + * @return TBool: ETrue if SMS Lock is active, otherwise EFalse + *
Name of return value: SMS Lock status + *
Type of return value: TBool + *
Range of return value: ETrue/EFalse + *
Contents of return value: A truth value indicating the + *
state of the component + */ + static TBool IsSMSLockActiveL(); + + /** + * Returns the state of the Autolock component (is the timeout active) + * @return TBool: ETrue if Autolock is active, otherwise EFalse + *
Name of return value: Autolock status + *
Type of return value: TBool + *
Range of return value: ETrue/EFalse + *
Contents of return value: A truth value indicating the + *
state of the component + */ + TBool IsAutolockActive(); + + // Methods from base classes + + /** + * From CSession The standard service entry point + * @param aMessage The message received from the client + */ + void ServiceL( const RMessage2 &aMessage ); + + /** + * From MSCPTimeoutHandler Timeout handler function + * @param aParam The data given to the timer object when initialized. + */ + void Timeout( TAny* aParam ); + + + private: //Methods + + // New Methods + + /** + * C++ default constructor. + */ + CSCPSession( CSCPServer& aServer ); + + /** + * Panic the client + * @param ?arg1 ?description + * @return ?description + */ + void PanicClient( TInt aPanic ) const; + + /** + * Handles the get code message + * @param aMessage The message received from the client + */ + void HandleGetCodeMessageL( const RMessage2 &aMessage ); + + /** + * Handles the store code message + * @param aMessage The message received from the client + */ + void HandleSetCodeMessageL( const RMessage2 &aMessage ); + + /** + * Handles the change code message + * @param aMessage The message received from the client + */ + void HandleChangeCodeMessageL( const RMessage2 &aMessage ); + + /** + * Handles the set phone lock message + * @param aMessage The message received from the client + */ + void HandleSetLockStateMessageL( const RMessage2 &aMessage ); + + /** + * Handles the query admin command message. + * @param aMessage The message received from the client + */ + void HandleQueryMessageL( const RMessage2 &aMessage ); + + /** + * Handles the get lock state message. + * @param aMessage The message received from the client + */ + void HandleGetLockStateMessageL( const RMessage2 &aMessage ); + + /** + * Handles get parameter value messages. + * @param aMessage The message received from the client + */ + void HandleGetParamMessageL( const RMessage2 &aMessage ); + + /** + * Handles set parameter value messages. + * @param aMessage The message received from the client + */ + void HandleSetParamMessageL( const RMessage2 &aMessage ); + + /** + * Handles check configuration messages. + * @param aMessage The message received from the client + */ + void HandleCheckConfigMessageL( const RMessage2 &aMessage ); + +//#ifdef __SAP_DEVICE_LOCK_ENHANCEMENTS + + /** + * Handles the authentication messages + * @param aMessage The message received from the client + */ + void HandleAuthenticationMessageL( const RMessage2 &aMessage ); + + /** + * Handles change code requests from the client + * @param aMessage The message received from the client + */ + void HandleChangeEnhCodeMessageL( const RMessage2 &aMessage ); + + /** + * Handles change code allowed query -messages from the client. + * @param aMessage The message received from the client + */ + void HandleQueryChangeMessageL( const RMessage2 &aMessage ); + + /** + * Handles cleanup (on application uninstallation) + * @param aMessage The message received from the client + * @return KErrNone if successful, error status otherwise + */ + TInt HandleCleanupL( const RMessage2 &aMessage ); + TInt HandleSetALPeriodL( const RMessage2 &aMessage ); +//#endif // __SAP_DEVICE_LOCK_ENHANCEMENTS + + /** + * Distributes the messages to the current handler function + * @param aMessage The message received from the client + */ + void DispatchSynchronousMessageL( const RMessage2 &aMessage ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Notifies all the stakeholders of a change in parameter value(s) of the specified parameter(s). + * This function is called either from PerformCleanupL() or SetParameterValueL() + * + * @params aParamIDArray: The ID(s) of the parameter that needs to be set + * aParamValueArray: The value(s) of the parameter(s) + * + * NOTE: aParamValueArray.Count() SHOULD BE EQUAL TO aParamIDArray.Count() + * + * @return TInt: KErrNone if successful, otherwise a system error code + */ + TInt NotifyAllStakeHoldersL( const RArray& aChange, TUint32 aCallerID ); + + /** + * Notifies all the stakeholders of a change in parameter value(s) of the specified parameter(s). + * This function is called either from SetParameterValueL() or LockOperationCompleted() + * + * @params aParamID: The ID(s) of the parameter that needs to be set + * aParamValue: The value(s) of the parameter(s) + * + * @return none + */ + void NotifyChangeL( TInt aParamID, const TDesC8 aParamVal, TUint32 aCallerID ); + + private: // Data + // Possible states for iLockCommandState + enum TSCPLockCmdState + { + ESCPLockCmdStateIdle, + ESCPLockCmdStateInProgress, + ESCPLockCmdStateInProgressAcknowledged, + ESCPLockCmdStateFinishedAckPending + }; + + /** A reference to the server */ + CSCPServer& iServer; + /** A pointer to the notification handler AO, owned */ + CSCPLockNotificationEventHandler* iNotificationHandler; + /** A pointer to the setting handler AO, owned */ + CSCPLockSettingEventHandler* iSettingHandler; + /** The current lock command state */ + TSCPLockCmdState iLockCommandState; + /** The current unlock command state */ + TBool iUnlockMessageSent; + /** The timeout handler ptr, if created. Owned, */ + CSCPTimer* iLockOperationTimer; + /** A pointer to the request status for a pending call, not owned */ + TRequestStatus* iPendingCallStatus; + /** An integer variable to define the input mode of the lock code query */ + TInt def_mode; + /** A character variable to get the very first character of the lock code */ + TChar ch; + + /* Parameter ID (wil always be either ESCPAutolockPeriod or + * ESCPMaxAutolockPeriod) that will be referred to notify the + * stakeholders in case of async notification + */ + TInt iALParamID; + + /* Parameter value corresponding to iALParamID that + * will be referred to notify the stakeholders in case + * of async notification. The memory for this is allocated in + * HandleSetParamMessageL() and deallocated in LockOperationCompleted() + * or the destructor. + */ + HBufC8* iALParamValue; + + /* The SID of the app that set the above two (iALParamID, iALParamValue) fields + */ + TUint32 iALParamCallerID; + }; + +#endif // SCPSESSION_H + +// End of File +