harvester/server/src/harvesterao.cpp
branchRCL_3
changeset 8 6752808b2036
parent 3 b73a2e62868f
child 9 04bdd8f58f0e
child 14 646a02f170b9
equal deleted inserted replaced
3:b73a2e62868f 8:6752808b2036
    49 const TInt KObjectDefStrSize = 20;
    49 const TInt KObjectDefStrSize = 20;
    50 
    50 
    51 _LIT( KTAGDaemonName, "ThumbAGDaemon" );
    51 _LIT( KTAGDaemonName, "ThumbAGDaemon" );
    52 _LIT( KTAGDaemonExe, "thumbagdaemon.exe" );
    52 _LIT( KTAGDaemonExe, "thumbagdaemon.exe" );
    53 
    53 
       
    54 _LIT(KVideo, "Video");
    54 _LIT(KInUse, "InUse");
    55 _LIT(KInUse, "InUse");
       
    56 
       
    57 _LIT( KExtensionMp4,   "mp4" );
       
    58 _LIT( KExtensionMpg4,  "mpg4" );
       
    59 _LIT( KExtensionMpeg4, "mpeg4" );
       
    60 _LIT( KExtension3gp,   "3gp" );
       
    61 _LIT( KExtension3gpp,  "3gpp" );
       
    62 _LIT( KExtension3g2,   "3g2" );
    55 
    63 
    56 CHarvesterAoPropertyDefs::CHarvesterAoPropertyDefs() : CBase()
    64 CHarvesterAoPropertyDefs::CHarvesterAoPropertyDefs() : CBase()
    57 	{
    65 	{
    58 	}
    66 	}
    59 
    67 
    65 	CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject );
    73 	CMdEObjectDef& objectDef = nsDef.GetObjectDefL( MdeConstants::Object::KBaseObject );
    66 	iCreationDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KCreationDateProperty );
    74 	iCreationDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KCreationDateProperty );
    67 	iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty );
    75 	iLastModifiedDatePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KLastModifiedDateProperty );
    68 	iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty );
    76 	iSizePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KSizeProperty );
    69 	iOriginPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KOriginProperty );
    77 	iOriginPropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KOriginProperty );
       
    78 	iItemTypePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KItemTypeProperty );
       
    79 	iTitlePropertyDef = &objectDef.GetPropertyDefL( MdeConstants::Object::KTitleProperty );
    70 	
    80 	
    71 	CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject );
    81 	CMdEObjectDef& mediaDef = nsDef.GetObjectDefL( MdeConstants::MediaObject::KMediaObject );
    72 	iPreinstalledPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KPreinstalledProperty );
    82 	iPreinstalledPropertyDef = &mediaDef.GetPropertyDefL( MdeConstants::MediaObject::KPreinstalledProperty );
    73 	}
    83 	}
    74 
    84 
   111 
   121 
   112 // ---------------------------------------------------------------------------
   122 // ---------------------------------------------------------------------------
   113 // CHarvesterAO
   123 // CHarvesterAO
   114 // ---------------------------------------------------------------------------
   124 // ---------------------------------------------------------------------------
   115 //
   125 //
   116 CHarvesterAO::CHarvesterAO() : CActive( KHarvesterCustomImportantPriority)
   126 CHarvesterAO::CHarvesterAO() : CActive( KHarvesterCustomImportantPriority )
   117     {
   127     {
   118     WRITELOG( "CHarvesterAO::CHarvesterAO() - begin" );
   128     WRITELOG( "CHarvesterAO::CHarvesterAO() - begin" );
   119     
   129     
   120     iServerPaused = ETrue;
   130     iServerPaused = ETrue;
   121     iNextRequest = ERequestIdle;
   131     iNextRequest = ERequestIdle;
   184    	iReadyPHArray.ResetAndDestroy();
   194    	iReadyPHArray.ResetAndDestroy();
   185     iReadyPHArray.Close();
   195     iReadyPHArray.Close();
   186     
   196     
   187     iContainerPHArray.ResetAndDestroy();
   197     iContainerPHArray.ResetAndDestroy();
   188     iContainerPHArray.Close();
   198     iContainerPHArray.Close();
   189 	
   199     
       
   200 	delete iHarvesterOomAO;
   190     delete iRestoreWatcher;
   201     delete iRestoreWatcher;
   191 	delete iOnDemandAO;
   202 	delete iOnDemandAO;
   192 	delete iMdEHarvesterSession;
   203 	delete iMdEHarvesterSession;
   193 	delete iMdESession;
   204 	delete iMdESession;
   194 	delete iQueue;
   205 	delete iQueue;
   195 	delete iHarvesterPluginFactory;
   206 	delete iHarvesterPluginFactory;
   196 	delete iMdeObjectHandler;
   207 	delete iMdeObjectHandler;
   197 	delete iUnmountHandlerAO;
   208 	delete iUnmountHandlerAO;
   198 	
   209 	
   199 	delete iPropDefs;
   210 	delete iPropDefs;
       
   211 	delete iCameraExtensionArray;
   200 	
   212 	
   201 	RMediaIdUtil::ReleaseInstance();
   213 	RMediaIdUtil::ReleaseInstance();
   202     
   214     
   203     REComSession::FinalClose();
   215     REComSession::FinalClose();
   204     }
   216     }
   248     iReHarvester = CReHarvesterAO::NewL();
   260     iReHarvester = CReHarvesterAO::NewL();
   249     iReHarvester->SetHarvesterQueue( iQueue );
   261     iReHarvester->SetHarvesterQueue( iQueue );
   250     
   262     
   251     iHarvesterPluginFactory = CHarvesterPluginFactory::NewL();
   263     iHarvesterPluginFactory = CHarvesterPluginFactory::NewL();
   252     iHarvesterPluginFactory->SetBlacklist( *iBlacklist );
   264     iHarvesterPluginFactory->SetBlacklist( *iBlacklist );
       
   265     
       
   266     iCameraExtensionArray = new ( ELeave ) CDesCArraySeg( 6 );
       
   267     iCameraExtensionArray->InsertIsqL( KExtensionMp4 );
       
   268     iCameraExtensionArray->InsertIsqL( KExtensionMpg4 );
       
   269     iCameraExtensionArray->InsertIsqL( KExtensionMpeg4 );
       
   270     iCameraExtensionArray->InsertIsqL( KExtension3gp );
       
   271     iCameraExtensionArray->InsertIsqL( KExtension3gpp );
       
   272     iCameraExtensionArray->InsertIsqL( KExtension3g2 );
   253 	
   273 	
   254     WRITELOG( "CHarvesterAO::ConstructL() - end" );
   274     WRITELOG( "CHarvesterAO::ConstructL() - end" );
   255     }
   275     }
   256 
   276 
   257 // ---------------------------------------------------------------------------
   277 // ---------------------------------------------------------------------------
   702             i--;
   722             i--;
   703             endindex--;
   723             endindex--;
   704 			continue;
   724 			continue;
   705 			}
   725 			}
   706 		TBuf<KObjectDefStrSize> objDefStr;
   726 		TBuf<KObjectDefStrSize> objDefStr;
   707 		iHarvesterPluginFactory->GetObjectDefL( *hd, objDefStr );
   727 		
   708 	    
   728 		if( !CheckForCameraItem( hd, objDefStr ) )
       
   729 		    {
       
   730 		    iHarvesterPluginFactory->GetObjectDefL( *hd, objDefStr );
       
   731 		    }
       
   732 		
   709 		if( objDefStr.Length() == 0 ||
   733 		if( objDefStr.Length() == 0 ||
   710 		    ( objDefStr == KInUse ) )
   734 		    ( objDefStr == KInUse ) )
   711 			{
   735 			{
   712 			const TInt error( KErrUnknown );
   736 			const TInt error( KErrUnknown );
   713             // notify observer, notification is needed even if file is not supported
   737             // notify observer, notification is needed even if file is not supported
   786 	    // set placeholder
   810 	    // set placeholder
   787 	    mdeObject->SetPlaceholder( ETrue );
   811 	    mdeObject->SetPlaceholder( ETrue );
   788 	    
   812 	    
   789 	    if( !iPropDefs )
   813 	    if( !iPropDefs )
   790 	    	{
   814 	    	{
   791 	    	iPropDefs = CHarvesterAoPropertyDefs::NewL( mdeObjectDef );
   815 	    	iPropDefs = CHarvesterAoPropertyDefs::NewL( defNS.GetObjectDefL( MdeConstants::Object::KBaseObject ) );
   792 	    	}
   816 	    	}
   793 
   817 
   794 	    // set file size
   818 	    // set file size
   795     	mdeObject->AddUint32PropertyL( *iPropDefs->iSizePropertyDef, phData->FileSize() );
   819     	mdeObject->AddUint32PropertyL( *iPropDefs->iSizePropertyDef, phData->FileSize() );
   796 
   820 
   801 	    // set modification date
   825 	    // set modification date
   802     	mdeObject->AddTimePropertyL( *iPropDefs->iLastModifiedDatePropertyDef, phData->Modified() );
   826     	mdeObject->AddTimePropertyL( *iPropDefs->iLastModifiedDatePropertyDef, phData->Modified() );
   803 	    
   827 	    
   804     	// set origin
   828     	// set origin
   805 		mdeObject->AddUint8PropertyL( *iPropDefs->iOriginPropertyDef, hd->Origin() );
   829 		mdeObject->AddUint8PropertyL( *iPropDefs->iOriginPropertyDef, hd->Origin() );
   806     	
   830 
       
   831         TBuf<KMaxDataTypeLength> mimeType;
       
   832         iHarvesterPluginFactory->GetMimeType( hd->Uri(), mimeType );
       
   833         if( mimeType.Length() > 0 )
       
   834             {
       
   835             mdeObject->AddTextPropertyL( *iPropDefs->iItemTypePropertyDef, mimeType );
       
   836             }
       
   837         else
       
   838             {
       
   839             mdeObject->AddTextPropertyL( *iPropDefs->iItemTypePropertyDef, KNullDesC );
       
   840             }
       
   841 		
       
   842 	    TPtrC name;
       
   843 	    TBool nameFound = MdsUtils::GetName( hd->Uri(), name );
       
   844 
       
   845 	    if ( nameFound )
       
   846 	        {
       
   847 	        mdeObject->AddTextPropertyL( *iPropDefs->iTitlePropertyDef, name );
       
   848 	        }
       
   849 	    else
       
   850 	        {
       
   851 	        mdeObject->AddTextPropertyL( *iPropDefs->iTitlePropertyDef, KNullDesC );
       
   852 	        }
       
   853 	    
   807     	CPlaceholderData* ph = NULL;
   854     	CPlaceholderData* ph = NULL;
   808     	if( hd->TakeSnapshot() )
   855     	if( hd->TakeSnapshot() )
   809     	    {
   856     	    {
   810     	    ph = static_cast<CPlaceholderData*>( hd->ClientData() );
   857     	    ph = static_cast<CPlaceholderData*>( hd->ClientData() );
   811     	    }
   858     	    }
  1117             
  1164             
  1118             TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ) );
  1165             TRAP_IGNORE( iHarvesterEventManager->DecreaseItemCountL( EHEObserverTypeMMC, 1 ) );
  1119             
  1166             
  1120             delete aHD;
  1167             delete aHD;
  1121 			aHD = NULL;
  1168 			aHD = NULL;
  1122 			return;
       
  1123             }
  1169             }
  1124         else
  1170         else
  1125             {
  1171             {
  1126             WRITELOG1( "CHarvesterAO::HarvestingCompleted() - unknown error: %d", errorCode );
  1172             WRITELOG1( "CHarvesterAO::HarvestingCompleted() - unknown error: %d", errorCode );
  1127             delete aHD;
  1173             delete aHD;
  1158             }
  1204             }
  1159         else
  1205         else
  1160         	{
  1206         	{
  1161             WRITELOG( "CHarvesterAO::HandleSessionOpened() - error creating mde harvester session" );
  1207             WRITELOG( "CHarvesterAO::HandleSessionOpened() - error creating mde harvester session" );
  1162         	}
  1208         	}
  1163         
  1209 
  1164         TRAPD( ohTrap, iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdESession ) );
  1210 #ifdef _DEBUG        
  1165         if ( ohTrap != KErrNone )
  1211         TRAP( errorTrap, iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdESession ) );
       
  1212         if ( errorTrap != KErrNone )
  1166                 {
  1213                 {
  1167                 WRITELOG( "CHarvesterAO::HandleSessionOpened() - ObjectHandler creation failed" );
  1214                 WRITELOG( "CHarvesterAO::HandleSessionOpened() - ObjectHandler creation failed" );
  1168                 }
  1215                 }
  1169         
  1216         
  1170 #ifdef _DEBUG
       
  1171         TRAP( errorTrap, PreallocateNamespaceL( aSession.GetDefaultNamespaceDefL() ) );
  1217         TRAP( errorTrap, PreallocateNamespaceL( aSession.GetDefaultNamespaceDefL() ) );
  1172         if ( errorTrap != KErrNone )
  1218         if ( errorTrap != KErrNone )
  1173             {
  1219             {
  1174             WRITELOG( "CHarvesterAO::HandleSessionOpened() - error loading default schema" );
  1220             WRITELOG( "CHarvesterAO::HandleSessionOpened() - error loading default schema" );
  1175             }
  1221             }
  1185         if ( errorTrap != KErrNone )
  1231         if ( errorTrap != KErrNone )
  1186             {
  1232             {
  1187             WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't start composer plugins" );
  1233             WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't start composer plugins" );
  1188             }
  1234             }
  1189 #else
  1235 #else
  1190         // The idea here is that all of these three methods needs to be called,
  1236         // The idea here is that all of these  methods needs to be called,
  1191         // even if some leave, thus the three TRAPs
  1237         // even if some leave, thus the several TRAPs
       
  1238         TRAP_IGNORE( iMdeObjectHandler = CMdeObjectHandler::NewL( *iMdESession ) );
  1192         TRAP_IGNORE( PreallocateNamespaceL( aSession.GetDefaultNamespaceDefL() ) );
  1239         TRAP_IGNORE( PreallocateNamespaceL( aSession.GetDefaultNamespaceDefL() ) );
  1193         TRAP_IGNORE( LoadMonitorPluginsL() );
  1240         TRAP_IGNORE( LoadMonitorPluginsL() );
  1194         TRAP_IGNORE( StartComposersL() );
  1241         TRAP_IGNORE( StartComposersL() );        
  1195         
       
  1196 #endif
  1242 #endif
  1197 
  1243 
  1198         if ( iContextEngineInitialized )
  1244         if ( iContextEngineInitialized )
  1199             {
  1245             {
  1200             iCtxEngine->SetMdeSession( iMdESession );
  1246             iCtxEngine->SetMdeSession( iMdESession );
  1218         	WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't create on demand observer" );
  1264         	WRITELOG( "CHarvesterAO::HandleSessionOpened() - couldn't create on demand observer" );
  1219         	}
  1265         	}
  1220     	
  1266     	
  1221         // Initializing pause indicator
  1267         // Initializing pause indicator
  1222         iServerPaused = EFalse;
  1268         iServerPaused = EFalse;
       
  1269 		
  1223 #ifdef _DEBUG
  1270 #ifdef _DEBUG
  1224         WRITELOG( "HarvesterThread::HandleSessionOpened() - Succeeded!" );
  1271         WRITELOG( "HarvesterThread::HandleSessionOpened() - Succeeded!" );
  1225         
  1272         
  1226         TBool isRomScanEnabled( EFalse );
  1273         TBool isRomScanEnabled( EFalse );
  1227         TRAP_IGNORE( CHarvesterCenRepUtil::IsRomScanEnabledL( isRomScanEnabled ) );
  1274         TRAP_IGNORE( CHarvesterCenRepUtil::IsRomScanEnabledL( isRomScanEnabled ) );
  1384                 }
  1431                 }
  1385 
  1432 
  1386             // no more items to harvest
  1433             // no more items to harvest
  1387             else
  1434             else
  1388                 {
  1435                 {
  1389                 
       
  1390                 // if container files to harvest, handle those
  1436                 // if container files to harvest, handle those
  1391                 if( iContainerPHArray.Count() > 0 )
  1437                 if( iContainerPHArray.Count() > 0 )
  1392                 	{
  1438                 	{
  1393                 	SetNextRequest( ERequestContainerPlaceholder );
  1439                 	SetNextRequest( ERequestContainerPlaceholder );
  1394                 	break;
  1440                 	break;
  1395                 	}
  1441                 	}
  1396                 
  1442                 
  1397 				if(iReadyPHArray.Count() > 0)
  1443                 const TInt arrayCount( iReadyPHArray.Count() );
       
  1444 				if( arrayCount > 0 )
  1398             		{
  1445             		{
  1399 #ifdef _DEBUG
  1446 #ifdef _DEBUG
  1400             		WRITELOG1("CHarvesterAO::RunL - items in ready pharray: %d", iReadyPHArray.Count() );
  1447             		WRITELOG1("CHarvesterAO::RunL - items in ready pharray: %d", arrayCount );
  1401 #endif   		
  1448 #endif   		
  1402             		const TInt arrayCount( iReadyPHArray.Count() );
       
  1403             		TInt endIndex( KPlaceholderQueueSize );
  1449             		TInt endIndex( KPlaceholderQueueSize );
  1404             		if( arrayCount < KPlaceholderQueueSize )
  1450             		if( arrayCount < KPlaceholderQueueSize )
  1405             		    {
  1451             		    {
  1406             		    endIndex = arrayCount;
  1452             		    endIndex = arrayCount;
  1407             		    }
  1453             		    }
  2591 	ResumeMonitoring();
  2637 	ResumeMonitoring();
  2592 	
  2638 	
  2593 	TRAP_IGNORE( ResumeHarvesterL() );
  2639 	TRAP_IGNORE( ResumeHarvesterL() );
  2594 	}
  2640 	}
  2595 
  2641 
       
  2642 TBool CHarvesterAO::CheckForCameraItem( CHarvesterData* aHd, TDes& aObjectDef )
       
  2643     {
       
  2644     if( aHd->Origin() == MdeConstants::Object::ECamera )
       
  2645         {
       
  2646         TPtrC ext;
       
  2647         if( !MdsUtils::GetExt( aHd->Uri(), ext ) )
       
  2648             {
       
  2649             return EFalse;
       
  2650             }
       
  2651         TInt pos( 0 );
       
  2652         if( iCameraExtensionArray->FindIsq( ext, pos ) == 0 ) // video extension matched
       
  2653             {
       
  2654             aObjectDef.Copy( KVideo );
       
  2655             return ETrue;
       
  2656             }
       
  2657         }
       
  2658     return EFalse;
       
  2659     }
       
  2660