diff -r 000000000000 -r d0791faffa3f mtpfws/mtpfw/dataproviders/dataproviderapi/interface/mmtpobjectmgr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mtpfws/mtpfw/dataproviders/dataproviderapi/interface/mmtpobjectmgr.h Tue Feb 02 01:11:40 2010 +0200 @@ -0,0 +1,286 @@ +// Copyright (c) 2006-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: +// + +/** + @file + @publishedPartner + @released +*/ + +#ifndef MMTPOBJECTMGR_H +#define MMTPOBJECTMGR_H + +#include +#include +#include +#include +#include + +class CMTPObjectMetaData; +class CMTPTypeArray; +class TMTPTypeUint32; + +/** +Defines the MTP data provider framework object store enumeration manager +interface. +@publishedPartner +@released +*/ +class MMTPObjectMgr + { +public: + + /** + Provides a count of the number of object meta data records present + in the MTP data object enumeration store. This query can be targeted + at specific storage media and/or object data formats, or can be used + to query all MTP data objects on the device. + @param aParams The query parameters. + @return A count of the number of object meta data records. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TUint CountL(const TMTPObjectMgrQueryParams& aParams) const = 0; + + /** + Commits into MTP data object enumeration store the object handle and + storage space previously reserved for the specified object. This is + typically used when either an MTP SendObjectInfo/SendObject, or + SendObjectPropList/SendObject operation sequence has completed + successfully. + @param aObject The MTP data object information record to be commited. + @leave One of the system wide error codes, if a processing failure occurs. + @see ReserveObjectHandleL + */ + virtual void CommitReservedObjectHandleL(CMTPObjectMetaData& aObject) = 0; + + /** + Provides an array of object handles present in the MTP data object + enumeration store. This query can be targeted at specific storage media + and/or object data formats, or can be used to query all MTP data objects + on the device. + + Depending on the query parameter specified, this query may incur significant + RAM consumption, and so is intended to be called repeatedly in order to + retrieve all matching SUID data. On completion, @see aContext can be used + to determine if there is more data to be retrieved. + + If there are no object handles which match the specified parameters then a + zero length SUID array is provided. + + @param aParams The query parameters. + @param aContext The query context data. On completion this data indicates + if there are additional object handle data to retrieve. + @param aHandles The MTP object handles array buffer to be populated. + @leave One of the system wide error codes, if a processing failure occurs. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void GetObjectHandlesL(const TMTPObjectMgrQueryParams& aParams, RMTPObjectMgrQueryContext& aContext, RArray& aHandles) const = 0; + + /** + Provides an array of object SUIDs present in the MTP data object + enumeration store. This query can be targeted at specific storage media + and/or object data formats, or can be used to query all MTP data objects + on the device. + + Depending on the query parameter specified, this query may incur significant + RAM consumption, and so is intended to be called repeatedly in order to + retrieve all matching object SUID data. On completion, @see aContext can be used + to determine if there is more data to be retrieved. + + If there are no object handles which match the specified parameters then a + zero length SUID array is provided. + + @param aParams The query parameters. + @param aContext The query context data. On completion this data indicates + if there are additional SUID data to retrieve. + @param aSuids The object SUIDs array buffer to be populated. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void GetObjectSuidsL(const TMTPObjectMgrQueryParams& aParams, RMTPObjectMgrQueryContext& aContext, CDesCArray& aSuids) const = 0; + + + + /** + Provides the MTP object handle of the object with the specified specified + System Unique Identifier (SUID). + @param aSuid The object SUID. + @return The MTP object handle. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TUint32 HandleL(const TDesC& aSuid) const = 0; + + /** + Inserts a single object information record into the MTP data object + enumeration store. A unique MTP object handle is assigned to the + data object. + @param aObject The MTP data object information record to be inserted. + @leave KErrAlreadyExists, if an object with the specified MTP object SUID + already exists in the MTP data object enumeration store. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void InsertObjectL(CMTPObjectMetaData& aObject) = 0; + + /** + Inserts multiple object meta data records in the MTP data object + enumeration store. A unique MTP object handle is assigned to each of the + data objects. + @param aObjects The MTP data object meta data records to be inserted. + @leave KErrAlreadyExists, if an object with the one of the specified MTP + object SUIDs already exists in the MTP data object enumeration store. + already exists in the MTP data object enumeration store. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void InsertObjectsL(RPointerArray& aObjects) = 0; + + /** + Modifies the specified MTP data object's object information record. + @param aObject The modified MTP data object information record values. + */ + virtual void ModifyObjectL(const CMTPObjectMetaData& aObject) = 0; + + /** + Provides either the object information record associated with the + associated MTP object handle, or provides an indication that the specified + object handle does not exist. + @param aHandle The MTP object handle associated with the object information + record to be provided. + @param aObject On exit, the object information record of the requested object. + @return ETrue if the specified object handle exists, otherwise EFalse. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TBool ObjectL(const TMTPTypeUint32& aHandle, CMTPObjectMetaData& aObject) const = 0; + + /** + Provides the object information record associated with the associated MTP + object SUID, or provides an indication that the specified object handle + does not exist. + @param aSuid The MTP object SUID associated with the object information + record to be provided. + @param aObject On exit, the object information record of the requested object. + @return ETrue if the specified object handle exists, otherwise EFalse. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TBool ObjectL(const TDesC& aSuid, CMTPObjectMetaData& aObject) const = 0; + + + /** + Provides the ID of the data provider responsible for the specified MTP + data object. + @param aHandle The MTP object handle. + @return The responsible data provider ID. + */ + virtual TUint ObjectOwnerId(const TMTPTypeUint32& aHandle) const = 0; + + + + /** + Provides the Persistent Unique Identifier (PUID) of the object with the + specified MTP object handle. + @param aHandle The MTP object handle. + @return The object PUID. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TMTPTypeUint128 PuidL(TUint32 aHandle) const = 0; + + /** + Provides the Persistent Unique Identifier (PUID) of the object with the + specified internal object unique ID. + @param aObjectUid The internal object unique ID. + @return The object PUID. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TMTPTypeUint128 PuidL(TInt64 aObjectUid) const = 0; + + /** + Provides the Persistent Unique Identifier (PUID) of the object with the + specified System Unique Identifier (SUID). + @param aSuid The object SUID. + @return The object PUID. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual TMTPTypeUint128 PuidL(const TDesC& aSuid) const = 0; + + /** + Removes the object information record associated with the specified MTP + object handle from the MTP data object enumeration store. + @param aHandle The MTP object handle associated with the object information + record to be removed. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void RemoveObjectL(const TMTPTypeUint32& aHandle) = 0; + + /** + Removes the object information record associated with the specified object + SUID from the MTP data object enumeration store. + @param aSuid The object SUID associated with the object information + record to be removed. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void RemoveObjectL(const TDesC& aSuid) = 0; + + /** + Removes multiple object meta data records from the MTP data object + enumeration store. + @param aSuids The array of object SUIDs associated with the object + meta data records to be removed. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void RemoveObjectsL(const CDesCArray& aSuids) = 0; + + /** + Removes from the MTP data object enumeration store all object meta data + records owned by the specified data provider. + @param aDataProviderId The ID of the data provider owning the object + meta data records to be deleted. + @leave One of the system wide error codes, if a processing failure occurs. + */ + virtual void RemoveObjectsL(TUint aDataProviderId) = 0; + + /** + Reserves space for and assigns an object handle to the object described + by the specified object information record. This is typically used when + processing MTP SendObjectInfo or SendObjectPropList operations. + @param aObject The object information record of the object. On + successful completion this is updated with the assigned object handle. + @param aSpaceRequired The storage space to be reserved for the object. + @leave KErrTooBig, if aSpaceRequired exceeds the available capacity of the + storage. + @leave KErrOverflow, if an object handle cannot be assigned. + @leave One of the system wide error codes, if a processing failure occurs. + @see CommitReservedObjectL + @see UnReserveObjectHandleL + */ + virtual void ReserveObjectHandleL(CMTPObjectMetaData& aObject, TUint64 aSpaceRequired) = 0; + + /** + Releases the object handle and storage space previously reserved for the + specified object. This is typically used when either an MTP + SendObjectInfo/SendObject, or SendObjectPropList/SendObject operation + sequence has not completed successfully. + @param aObject The MTP data object information record of the object. + @leave One of the system wide error codes, if a processing failure occurs. + @see ReserveObjectHandleL + */ + virtual void UnreserveObjectHandleL(const CMTPObjectMetaData& aObject) = 0; + /** + Get MtpDeltaDataMgr + */ + virtual TAny* MtpDeltaDataMgr() + { + return NULL; + }; + }; + +#endif // MMTPOBJECTMGR_H