mtpfws/mtpfw/src/cmtpparserrouter.cpp
changeset 18 1b39655331a3
parent 17 aabe5387f5ce
child 20 6e82ae192c3a
equal deleted inserted replaced
17:aabe5387f5ce 18:1b39655331a3
  1996             if (!iSingletons.ObjectMgr().ObjectL(aParams.Param(CMTPParserRouter::TRoutingParameters::EParamObjectHandle), *obj))
  1996             if (!iSingletons.ObjectMgr().ObjectL(aParams.Param(CMTPParserRouter::TRoutingParameters::EParamObjectHandle), *obj))
  1997                 {
  1997                 {
  1998                 // Object does not exist.
  1998                 // Object does not exist.
  1999                 aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
  1999                 aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
  2000                 }
  2000                 }
       
  2001             else if(!iSingletons.StorageMgr().ValidStorageId(obj->Uint(CMTPObjectMetaData::EStorageId)))
       
  2002             	{ 
       
  2003 				aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
       
  2004             	}
  2001             else
  2005             else
  2002                 {
  2006                 {
  2003                 aParams.SetParam(CMTPParserRouter::TRoutingParameters::EParamFormatCode, obj->Uint(CMTPObjectMetaData::EFormatCode));
  2007                 aParams.SetParam(CMTPParserRouter::TRoutingParameters::EParamFormatCode, obj->Uint(CMTPObjectMetaData::EFormatCode));
  2004                 aParams.SetParam(CMTPParserRouter::TRoutingParameters::EParamFormatSubCode, obj->Uint(CMTPObjectMetaData::EFormatSubCode));
  2008                 aParams.SetParam(CMTPParserRouter::TRoutingParameters::EParamFormatSubCode, obj->Uint(CMTPObjectMetaData::EFormatSubCode));
  2005                 aParams.SetParam(CMTPParserRouter::TRoutingParameters::EParamStorageSystemType, iSingletons.StorageMgr().StorageL(obj->Uint(CMTPObjectMetaData::EStorageId)).Uint(CMTPStorageMetaData::EStorageSystemType));            
  2009                 aParams.SetParam(CMTPParserRouter::TRoutingParameters::EParamStorageSystemType, iSingletons.StorageMgr().StorageL(obj->Uint(CMTPObjectMetaData::EStorageId)).Uint(CMTPStorageMetaData::EStorageSystemType));            
  2175     {
  2179     {
  2176     __FLOG(_L8("RoutingTargetL, Entry"));    
  2180     __FLOG(_L8("RoutingTargetL, Entry"));    
  2177     // Parse the operation request dataset.
  2181     // Parse the operation request dataset.
  2178     TRoutingParameters params(aRequest, static_cast<MMTPConnection&>(aConnection));
  2182     TRoutingParameters params(aRequest, static_cast<MMTPConnection&>(aConnection));
  2179     ParseOperationRequestL(params);
  2183     ParseOperationRequestL(params);
  2180       
  2184     ValidateOperationRequestParametersL(params);
       
  2185     
  2181     // Route the operation request.
  2186     // Route the operation request.
  2182     RArray<TUint> targets;
  2187     RArray<TUint> targets;
  2183     CleanupClosePushL(targets);
  2188     CleanupClosePushL(targets);
  2184     params.SetParam(TRoutingParameters::EFlagRoutingTypes, (ETypeFramework | ETypeOperationParameter | ETypeRequestRegistration));
  2189     params.SetParam(TRoutingParameters::EFlagRoutingTypes, (ETypeFramework | ETypeOperationParameter | ETypeRequestRegistration));
  2185     RouteOperationRequestL(params, targets);
  2190     RouteOperationRequestL(params, targets);
  2291         CleanupStack::PopAndDestroy(&valid);
  2296         CleanupStack::PopAndDestroy(&valid);
  2292         }
  2297         }
  2293     __FLOG(_L8("ValidateTargetsL, Exit"));
  2298     __FLOG(_L8("ValidateTargetsL, Exit"));
  2294     }
  2299     }
  2295     
  2300     
       
  2301 void CMTPParserRouter::ValidateOperationRequestParametersL(TRoutingParameters& aParams) const
       
  2302 	{
       
  2303     __FLOG(_L8("ValidateOperationRequestParametersL, Entry"));
       
  2304     if(aParams.Param(TRoutingParameters::EFlagInvalid))
       
  2305     	{
       
  2306 		__FLOG(_L8("ValidateOperationRequestParametersL, Invalid is true,Exit"));
       
  2307 		return;
       
  2308     	}
       
  2309     		
       
  2310     const TUint16 KOpCode(aParams.Request().Uint16(TMTPTypeRequest::ERequestOperationCode));
       
  2311 	__FLOG_VA((_L8("Operation Code = 0x%04X"), KOpCode));
       
  2312 	switch (KOpCode)
       
  2313 	   {
       
  2314 		case EMTPOpCodeDeleteObject:
       
  2315 			{
       
  2316 			const TUint32 KObjectHandle(aParams.Request().Uint32(TMTPTypeRequest::ERequestParameter1));
       
  2317 			if ((KObjectHandle != KMTPHandleAll) && (KObjectHandle != KMTPHandleNone))
       
  2318 				{
       
  2319 				CMTPObjectMetaData* obj(CMTPObjectMetaData::NewLC());
       
  2320 				if (!iSingletons.ObjectMgr().ObjectL(KObjectHandle, *obj))
       
  2321 					{
       
  2322 					// Object does not exist.
       
  2323 					aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
       
  2324 					}
       
  2325 				else if(!iSingletons.StorageMgr().IsReadWriteStorage(obj->Uint(CMTPObjectMetaData::EStorageId)))
       
  2326 					{
       
  2327 					aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);      
       
  2328 					}
       
  2329 				CleanupStack::PopAndDestroy(obj);
       
  2330 				}
       
  2331 			}
       
  2332 		   break;
       
  2333 		   
       
  2334 	    case EMTPOpCodeMoveObject:
       
  2335 	    	{
       
  2336 	    	const TUint32 KObjectHandle(aParams.Request().Uint32(TMTPTypeRequest::ERequestParameter1));
       
  2337 			CMTPObjectMetaData* obj(CMTPObjectMetaData::NewLC());
       
  2338 			if (!iSingletons.ObjectMgr().ObjectL(KObjectHandle, *obj))
       
  2339 				{
       
  2340 				// Object does not exist.
       
  2341 				aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
       
  2342 				}
       
  2343 			else if(!iSingletons.StorageMgr().IsReadWriteStorage(obj->Uint(CMTPObjectMetaData::EStorageId)))
       
  2344 				{
       
  2345 				aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);      
       
  2346 				}
       
  2347 			else
       
  2348 				{
       
  2349 				const TUint32 KStorageID(aParams.Request().Uint32(TMTPTypeRequest::ERequestParameter2));
       
  2350 				if( (!iSingletons.StorageMgr().ValidStorageId(KStorageID)) || (!iSingletons.StorageMgr().IsReadWriteStorage(KStorageID)) )
       
  2351 					{
       
  2352 					aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
       
  2353 					}
       
  2354 				}
       
  2355 			CleanupStack::PopAndDestroy(obj);
       
  2356 	    	}
       
  2357 	    	break;
       
  2358 	    case EMTPOpCodeCopyObject:    
       
  2359 	    	{
       
  2360 	    	const TUint32 KStorageID(aParams.Request().Uint32(TMTPTypeRequest::ERequestParameter2));
       
  2361 			if( (!iSingletons.StorageMgr().ValidStorageId(KStorageID)) || (!iSingletons.StorageMgr().IsReadWriteStorage(KStorageID)) )
       
  2362 				{
       
  2363 				aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
       
  2364 				}
       
  2365 	    	}
       
  2366 	    	break;
       
  2367 	    case EMTPOpCodeSendObjectInfo:
       
  2368 	    case EMTPOpCodeSendObjectPropList:
       
  2369 	    	{
       
  2370 	    	const TUint32 KStorageID(aParams.Request().Uint32(TMTPTypeRequest::ERequestParameter1));
       
  2371 			if( KMTPStorageDefault != KStorageID )
       
  2372 				{
       
  2373 				if( (!iSingletons.StorageMgr().ValidStorageId(KStorageID)) || (!iSingletons.StorageMgr().IsReadWriteStorage(KStorageID)) )
       
  2374 					{
       
  2375 					aParams.SetParam(TRoutingParameters::EFlagInvalid, ETrue);
       
  2376 					}
       
  2377 				}
       
  2378 	    	}
       
  2379 	    	break;
       
  2380 		default:
       
  2381 			break;
       
  2382 	   }
       
  2383     __FLOG(_L8("ValidateOperationRequestParametersL, Exit"));
       
  2384 	}
       
  2385 
  2296 /**
  2386 /**
  2297 Provides the routing sub-type modifier flags of the specified routing sub-type.
  2387 Provides the routing sub-type modifier flags of the specified routing sub-type.
  2298 @param aSubType The routing sub-type identifier.
  2388 @param aSubType The routing sub-type identifier.
  2299 @return The routing sub-type modifier flags.
  2389 @return The routing sub-type modifier flags.
  2300 */
  2390 */