mtpdataproviders/mtpfileandfolderdp/src/mtpfiledpprocessor.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:11:40 +0200
changeset 0 d0791faffa3f
permissions -rw-r--r--
Revision: 201003 Kit: 201005

// 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:
// mtpdevicedpprocessor.h
// 
//

#include <mtp/tmtptyperequest.h>

#include "mtpfiledpprocessor.h"
#include "cmtprequestprocessor.h"
#include "cmtpgetobjectinfo.h"
#include "cmtpgetobject.h"
#include "cmtpdeleteobject.h"
#include "cmtpsendobjectinfo.h"
#include "cmtpcopyobject.h"
#include "cmtpmoveobject.h"
#include "cmtpgetobjectpropssupported.h"
#include "cmtpgetobjectpropdesc.h"
#include "cmtpgetobjectpropvalue.h"
#include "cmtpsetobjectpropvalue.h"
#include "cmtprequestunknown.h"
#include "cmtpgetobjectproplist.h"
#include "cmtpsetobjectproplist.h"
#include "cmtpgetreferences.h"
#include "cmtpsetreferences.h"
#include "cmtpgetformatcapabilities.h"
#include "cmtpgetpartialobject.h"
#include "cmtpsetobjectprotection.h"
/**
A mapping table from the operation code to the request processor factory method
*/
static const TMTPRequestProcessorEntry KMTPFileDpRequestProcessorTable[] = 
	{
		{EMTPOpCodeGetObjectInfo, CMTPGetObjectInfo::NewL},
		{EMTPOpCodeGetObject, CMTPGetObject::NewL},
		{EMTPOpCodeDeleteObject, CMTPDeleteObject::NewL},		
		{EMTPOpCodeSendObjectInfo, CMTPSendObjectInfo::NewL},
		{EMTPOpCodeSendObject, CMTPSendObjectInfo::NewL},	//force the SendObject request to be processed by the SendObjectInfo processor 
		{EMTPOpCodeSendObjectPropList, CMTPSendObjectInfo::NewL},	//force the SendObjectPropList request to be processed by the SendObjectInfo processor 
		{EMTPOpCodeMoveObject, CMTPMoveObject::NewL},	
		{EMTPOpCodeCopyObject, CMTPCopyObject::NewL},
		{EMTPOpCodeGetObjectPropsSupported, CMTPGetObjectPropsSupported::NewL},
		{EMTPOpCodeGetObjectPropDesc, CMTPGetObjectPropDesc::NewL},
		{EMTPOpCodeGetObjectPropValue, CMTPGetObjectPropValue::NewL},
		{EMTPOpCodeSetObjectPropValue, CMTPSetObjectPropValue::NewL},
		{EMTPOpCodeSetObjectPropList, CMTPSetObjectPropList::NewL},
		{EMTPOpCodeGetObjectPropList, CMTPGetObjectPropList::NewL},
		{EMTPOpCodeGetObjectReferences, CMTPGetReferences::NewL},
		{EMTPOpCodeSetObjectReferences, CMTPSetReferences::NewL},
        {EMTPOpCodeGetFormatCapabilities,CMTPGetFormatCapabilities::NewL},
        {EMTPOpCodeGetPartialObject, CMTPGetPartialObject::NewL},
	 {EMTPOpCodeSetObjectProtection, CMTPSetObjectProtection::NewL}				
	};

/**
Create a request processor that matches the request
@param aPlugin	The reference to the data provider plugin 
@param aFramework The reference to the data provider framework
@param aRequest	The request to be processed
@param aConnection The connection from which the request comes from
@return a pointer to the request processor
*/	
MMTPRequestProcessor* MTPFileDpProcessor::CreateL(
													MMTPDataProviderFramework& aFramework,
													const TMTPTypeRequest& aRequest, 
													MMTPConnection& aConnection)
	{
	TMTPRequestProcessorCreateFunc createFunc = NULL; 
	TUint16 operationCode = aRequest.Uint16(TMTPTypeRequest::ERequestOperationCode);
	TInt count = sizeof(KMTPFileDpRequestProcessorTable) / sizeof(TMTPRequestProcessorEntry);
	for(TInt i = 0; i < count; i++)
		{
		if(KMTPFileDpRequestProcessorTable[i].iOperationCode == operationCode)
			{
			createFunc = KMTPFileDpRequestProcessorTable[i].iCreateFunc;
			break;
			}
		}
		
	if(!createFunc)	
		{
		createFunc = CMTPRequestUnknown::NewL;
		}
		
	return (*createFunc)(aFramework, aConnection);
	}