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 */ |