diff -r 000000000000 -r 4e949f03ecc5 locationtriggering/ltcontainer/inc/lbttriggerstoreinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationtriggering/ltcontainer/inc/lbttriggerstoreinterface.h Wed Nov 03 23:28:39 2010 +0530 @@ -0,0 +1,272 @@ +/* +* Copyright (c) 2006 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: This file defines the interface which the trigger stores must +* implement. +* +*/ + + +#ifndef M_TRIGGERSTORE_INTERFACE_H +#define M_TRIGGERSTORE_INTERFACE_H + +#include +#include +#include "lbtcontainertriggerentry.h" +#include "lbtcontainerlistoptions.h" +#include "lbtcontainerupdatefilter.h" +#include "lbtsecuritypolicy.h" + +// FORWARD DECLARATION +class MLbtTriggerStoreObserver; + +/** + * This typedef defines a bitmask of the triggers supported by + * a trigger store. It is a bitmask of the CLbtTriggerEntry::TType enumerator. + */ +typedef TInt32 TTriggerTypeMask; + +/** + * This M class defines the interface for the trigger stores. + * + * The Trigger Store Managers must implement this interface to + * provide the store functionality. + */ +class MLbtTriggerStore + { +public: // Methods of the interface. + + /** + * Structure used to supply data on notifing observers of any trigger + * store modification operation + * + */ + struct TLbtTriggerModifiedInfo + { + // The id of the trigger that is modified + TLbtTriggerId iTriggerId; + + // The area type of the trigger that is modified + CLbtGeoAreaBase::TGeoAreaType iAreaType; + + // Uid of manager ui + TUid iManagerUi; + + // Uid of the owner + TUid iOwner; + + // Uid of the startup process + TUid iStartupProcess; + }; + + /** + * This method returns the types of triggers that are supported in this + * trigger store. + * + * @return a bitmask of the types of triggers supported by a trigger + * store. + */ + virtual TTriggerTypeMask SupportedTriggerTypes() = 0; + + /** + * Creates a trigger in the trigger store in a asynchronous fashion. + * Once the creation is complete the client is signalled by completing + * its active object. The request staus of the active object will hold + * the error code which informs the client of the status of the creation. + * + * @param aEntry reference to the trigger entry object that contains the + * trigger data which has to be created. + * + * @param aStatus the clients request status + */ + virtual void CreateTriggerL( CLbtContainerTriggerEntry &aEntry, + TRequestStatus& aStatus ) = 0; + + /** + * Function should append the information of the trigger that has been modfied + * by the latest operation + * + * @param aArray the array of the client to which the trigger info should be appended + */ + virtual void TriggersModified(RArray& aArray) = 0; + + /** + * Used to set the time till when compaction is preferred. Over the time specified + * compaction should not happed in ideal cases. As and when compaction happens this + * time is check to see that compaction does not over shoot this time interval + * + * @param aTime the time untill which compaction can proceed without effecting + * the system + */ + virtual void SetTimeTillCompaction(TTime aTime) = 0; + + + /** + * Used to retreive a specified list of triggers from the store. This triggers + * are specifed using an array of trigger ids. + * + * @param aTriggerIds the array of trigger ids which need to be retreived + * + * @param aTriggers reference to the pointer array into which the trigger are + * retreived from the trigger store + * + * @param aStatus the clients active status + * + * @param aSecurityPolicy the security policy that the triggers have to satisfy + */ + virtual void GetTriggersL( RArray& aTriggerIds, + RPointerArray& aTriggers, + TLbtSecurityPolicy& aSecurityPolicy, + TRequestStatus &aStatus ) = 0; + + /** + * Used to list trigger based on list options. The list options contains a filter + * based on which the trigger will be listed. The listing is done asynchronously + * + * @param aFilter the container list options which contains the filter based on + * which trigger are filtered in the trigger store + * + * @param aTriggers refernce to the pointer array into which the trigger are + * retreived from the trigger store and stored + * + * @param aStatus the clients active status + */ + virtual void ListTriggersL( CLbtContainerListOptions* aFilter, + RPointerArray& aTriggers, + TLbtSecurityPolicy& aSecurityPolicy, + TRequestStatus &aStatus ) = 0; + + /** + * Updates the contents of a trigger in the trigger store based on masks. The trigger + * is searched in the trigger store based on the trigger id supplied in the trigger + * entry object. The masks define the trigger data members that need to be updated. + * This request is processed asychronously. + * + * @param aEntry reference to the trigger entry object that contains the + * trigger data which has to be created. + * + * @param aDataMask the data mask based on which the contents in the triggers dynamic + * info is updated. The masks are defined by enumeration + * TLbtTriggerDynamicInfo::TLbtDynamicInfoAttribute + * + * @param aAttrMask the attribute mask based on which the atrributes of the trigger + * are updated. The masks are defined by enumeration + * CLbtTriggerEntry::TAttribute + * + * @param aStatus the clients active status + */ + virtual void UpdateTriggerL( CLbtContainerTriggerEntry& aEntry, + TLbtTriggerDataMask aDataMask, + TLbtTriggerAttributeFieldsMask aAttrMask, + TLbtSecurityPolicy& aSecurityPolicy, + TRequestStatus& aStatus) = 0; + /** + * Updates the state of multiple triggers based on container filter. This request + * is processed asychronously. + * + * @param aState the state to which the triggers that fall in the filter needs to + * be to updated to + * @param aFilter the filter based on which the triggers are selected to be updated + * @param aStatus the clients active status + */ + virtual void UpdateTriggersStateL( CLbtTriggerEntry::TLbtTriggerState aState, + CLbtContainerUpdateFilter* aFilter, + TLbtFireOnUpdate aFireOnUpdate, + TLbtSecurityPolicy& aSecurityPolicy, + TRequestStatus& aStatus ) = 0; + + /** + * Updates the validity of multiple triggers specified by trigger ids. + * + * @param aValidity the validity to which the triggers have to be changed to + * @param aTriggerIds the array of trigger ids of which the validity have to be + * changed + * @param aStatus the clients active status + */ + virtual void UpdateTriggersValidityL( TLbtTriggerDynamicInfo::TLbtTriggerValidity aValidity, + RArray& aTriggerIds, + TLbtSecurityPolicy& aSecurityPolicy, + TRequestStatus& aStatus) = 0; + + /** + * Updates the fired state of multiple triggers specified by the trigger ids + * + * @param aTriggerIds the array of trigger ids of which the validity have to be + * changed + * @param aFireBool the state to which the fired attributes has to be changed to + * @param aStatus the clients active status + */ + virtual void UpdateTriggerFiredStateL( RArray& aTriggerIds, + TBool aFireBool, + TRequestStatus& aStatus) = 0; + + /** + * Deletes multiple triggers based container update filter. All the trigger in the store + * that satisfy the supplied filter are deleted from the store. + * + * @param aFilter the filter based on which the triggers are selected to be updated + * @param aStatus the clients active status + */ + virtual void DeleteTriggersL( CLbtContainerUpdateFilter* aFilter, + TLbtSecurityPolicy& aSecurityPolicy, + TRequestStatus& aStatus) = 0; + + /** + * Deletes a single trigger which matches the trigger id supplied + * + * @param aTriggerId the id of the trigger which needs to be deleted + */ + virtual void DeleteTriggerL( TLbtTriggerId aTriggerId ) = 0; + + /** + * Returns the count of all the enabled and valid triggers in the store. + * + * @return the number of enabled and valid triggers + */ + virtual TInt GetCountOfEnabledAndValidTriggers() =0; + + /** + * Method to check if the trigger store is busy. The store could be busy due to many + * reasons with the mail reason being compaction. + * + * @return ETrue if the store is busy, EFalse otherwise + */ + virtual TBool IsStoreBusy() = 0; + + /** + * Used to set the trigger store observer. The set observer will be notifed if any updation + * operation is preformed on the trigger store. The modification include creation, updation + * or deletion of any trigger + * + * @param pointer to the observed that needs to be notified when the store is updated + */ + virtual void SetStoreChangeObserver(MLbtTriggerStoreObserver* aObserver) = 0; + + /** + * The implementation of this method should cancel any ongoing async + * operation + */ + virtual TInt CancelCurrentOperation() = 0; + + /** + * pure virtual destructor + */ + virtual ~MLbtTriggerStore() {}; + }; + + +#endif // M_TRIGGERSTORE_INTERFACE_H + +// end of file + +