mtpfws/mtpfw/dataproviders/dataproviderapi/interface/mmtpdataprovider.h
changeset 0 d0791faffa3f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/dataproviders/dataproviderapi/interface/mmtpdataprovider.h	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,189 @@
+// 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 MMTPDATAPROVIDER_H
+#define MMTPDATAPROVIDER_H
+
+#include <badesca.h>
+#include <e32base.h>
+#include <mtp/mtpdataproviderapitypes.h>
+
+class MMTPConnection;
+class MMTPDataProviderFramework;
+class TMTPTypeEvent;
+class TMTPTypeRequest;
+
+/** 
+Defines the MTP data provider Service Provider Interface (SPI).
+@publishedPartner
+@released
+*/
+class MMTPDataProvider
+    {
+public:
+
+    /**
+    Cancels the most recent outstanding request made to the MTP data provider 
+    service provider interface. If there is no such request outstanding, then 
+    no action is taken.
+    */
+    virtual void Cancel() = 0;
+    
+    /**
+    Notifies the data provider that an asynchronous event dataset has been 
+    received on the specified MTP connection.
+    @param aEvent The MTP event dataset.
+    @param aConnection The MTP connection on which the event was received.
+    @leave One of the system wide error code, if a processing failure occurs
+    in the data provider.
+    */
+    virtual void ProcessEventL(const TMTPTypeEvent& aEvent, MMTPConnection& aConnection) = 0;
+
+    /**
+    Notifies the data provider of a significant event which has been detected. 
+    Additional details regarding the event may optionally be provided in the 
+    accompanying notification parameter block.
+    @param aNotification The notification type identifier.
+    @param aParams The notification type specific parameter block
+    @leave One of the system wide error code if a processing failure occurs
+    in the data provider.
+    */
+    virtual void ProcessNotificationL(TMTPNotification aNotification, const TAny* aParams) = 0;
+    
+    /**
+    Initiates an MTP transaction phase processing sequence in the data 
+    provider. The data provider must respond by issuing a signal to the MTP 
+    data provider framework layer interface that is appropriate for the request
+    type and current phase (as specified by aPhase) of the MTP transaction 
+    being processed, as follows:
+    
+    MTP Transaction Phase	Valid MMTPDataProviderFramework Signal
+    ---------------------   --------------------------------------
+	ERequestPhase			ReceiveDataL, SendDataL, SendResponseL
+	EResponsePhase			SendResponseL
+	ECompletingPhase		TransactionCompleteL
+     
+    @param aPhase The MTP transaction phase to be processed.
+    @param aRequest The MTP request dataset of the active MTP transaction.
+    @param aConnection The MTP connection on which the transaction is being 
+    processed.
+    @see MMTPDataProviderFramework::ReceiveDataL
+    @see MMTPDataProviderFramework::SendDataL
+    @see MMTPDataProviderFramework::SendResponseL
+    @see MMTPDataProviderFramework::TransactionCompleteL
+    @leave One of the system wide error code if a processing failure occurs
+    in the data provider.
+    */
+    virtual void ProcessRequestPhaseL(TMTPTransactionPhase aPhase, const TMTPTypeRequest& aRequest, MMTPConnection& aConnection) = 0;
+    
+    /**
+    @Deprecated.
+    Initiates an object store enumeration sequence to enumerate all MTP data 
+    objects which reside on the specified storage and for which the data 
+    provider is responsible. The data provider is expected to invoke the 
+    appropriate @see MMTPObjectMgr methods to enumerate all MTP data objects 
+    for which it is responsible and which it wishes to have presented to a 
+    connected MTP initiator. The data provider must complete the sequence by 
+    signalling @see ObjectEnumerationCompleteL to the data provider framework 
+    layer interface.
+    @param aStorageId The MTP StorageID of the storage to be enumerated. A 
+    value of KMTPStorageAll indicates that all storages should be enumerated.
+    @leave One of the system wide error code if a processing failure occurs
+    in the data provider.
+    @see MMTPDataProviderFramework::ObjectEnumerationCompleteL
+    */	
+    IMPORT_C virtual void StartObjectEnumerationL(TUint32 aStorageId);
+    
+    /**
+    Initiates a storage enumeration sequence. The data provider is expected to 
+    invoke the appropriate @see MMTPStorageMgr methods to enumerate all MTP 
+    storages for which it is responsible and which it wishes to have presented 
+    to a connected MTP initiator. The data provider must complete the sequence 
+    by signalling @see StorageEnumerationCompleteL to the data provider 
+    framework layer interface.
+    @leave One of the system wide error code if a processing failure occurs
+    in the data provider.
+    @see MMTPDataProviderFramework::StorageEnumerationCompleteL
+    */	
+    virtual void StartStorageEnumerationL() = 0;
+    
+    /**
+    Provides the set of MTP datacodes of the specified category that are 
+    supported by the data provider.
+    @param aCategory The requested MTP datacode category.
+    @param aArray On successful completion, the set of MTP datacodes that are 
+    supported by the data provider.
+    */  
+    virtual void Supported(TMTPSupportCategory aCategory, RArray<TUint>& aCodes) const = 0;
+    
+    /**
+    Provides the MTP string values of the specified category that is supported 
+    by the data provider. 
+    @param aCategory The requested MTP datacode category.
+    @param aStrings On successful completion, the set of string data that are 
+    supported by the data provider.
+    @leave One of the system wide error code if a processing failure occurs
+    in the data provider.
+    */  
+    IMPORT_C virtual void SupportedL(TMTPSupportCategory aCategory, CDesCArray& aStrings) const;
+    
+    /**
+    Provides an MTP data provider extension interface implementation 
+    for the specified interface Uid. 
+    @param aInterfaceUid The unique identifier for the extension interface being 
+    requested.
+    @return Pointer to an interface instance or 0 if the interface is not 
+    supported. Ownership is NOT transfered.
+    */
+    IMPORT_C virtual TAny* GetExtendedInterface(TUid aInterfaceUid);
+    
+protected:
+
+    /**
+    Provides a handle to the MTP data provider framework layer interface.
+    @return Handle of the MTP data provider framework layer interface. 
+    Ownership is NOT transfered.
+    */
+    virtual MMTPDataProviderFramework& Framework() const = 0;
+    
+public:
+    /**
+    Initiates an object store enumeration sequence to enumerate all MTP data 
+    objects which reside on the specified storage and for which the data 
+    provider is responsible. The data provider is expected to invoke the 
+    appropriate @see MMTPObjectMgr methods to enumerate all MTP data objects 
+    for which it is responsible and which it wishes to have presented to a 
+    connected MTP initiator. The data provider must complete the sequence by 
+    signalling @see ObjectEnumerationCompleteL to the data provider framework 
+    layer interface.
+    @param aStorageId The MTP StorageID of the storage to be enumerated. A 
+    value of KMTPStorageAll indicates that all storages should be enumerated.
+    @param aPersistentFullEnumeration It is used by only persistent data providers,
+    it indicates whether the persistent data providers should do the object full-enumreation or not. 
+    @leave One of the system wide error code if a processing failure occurs
+    in the data provider.
+    @see MMTPDataProviderFramework::ObjectEnumerationCompleteL
+    */	
+	IMPORT_C virtual void StartObjectEnumerationL(TUint32 aStorageId, TBool aPersistentFullEnumeration);
+    
+    };
+
+#endif // MMTPDATAPROVIDER_H