localconnectivityservice/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp
branchRCL_3
changeset 37 7e0ecb5b116a
parent 5 11d83199e2d9
equal deleted inserted replaced
35:57266085a3a2 37:7e0ecb5b116a
    71 void CBTServiceStarter::ConstructL()
    71 void CBTServiceStarter::ConstructL()
    72     {
    72     {
    73     FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL()"));
    73     FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL()"));
    74     iDevice = CBTDevice::NewL();
    74     iDevice = CBTDevice::NewL();
    75     iDialog = CObexUtilsDialog::NewL( this );
    75     iDialog = CObexUtilsDialog::NewL( this );
       
    76     iDelayedDestroyer = CBTServiceDelayedDestroyer::NewL(CActive::EPriorityStandard);
    76     FeatureManager::InitializeLibL();
    77     FeatureManager::InitializeLibL();
    77     iFeatureManagerInitialized = ETrue;
    78     iFeatureManagerInitialized = ETrue;
    78     FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL() completed"));
    79     FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL() completed"));
    79     }
    80     }
    80 
    81 
   107     delete iDevice;
   108     delete iDevice;
   108 
   109 
   109     delete iController;
   110     delete iController;
   110     delete iBTEngDiscovery;
   111     delete iBTEngDiscovery;
   111     delete iDialog;
   112     delete iDialog;
   112 
   113     delete iDelayedDestroyer;
       
   114     
   113     if(iWaiter && iWaiter->IsStarted() )
   115     if(iWaiter && iWaiter->IsStarted() )
   114         {
   116         {
   115         iWaiter->AsyncStop();
   117         iWaiter->AsyncStop();
   116         }
   118         }
   117     delete iBTEngSettings;
   119     delete iBTEngSettings;
   711                                                           const RSdpResultArray& aAttr, 
   713                                                           const RSdpResultArray& aAttr, 
   712                                                           TInt aErr )
   714                                                           TInt aErr )
   713     {
   715     {
   714     FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceAttributeSearchComplete()"));               
   716     FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceAttributeSearchComplete()"));               
   715     TInt err = KErrNone;
   717     TInt err = KErrNone;
   716     if (aErr==KErrEof && aAttr.Count()>0 )
   718     if ((aErr==KErrEof || aErr==KErrNone) && aAttr.Count()>0 )
   717         {            
   719         {            
   718         RSdpResultArray results=aAttr;    
   720         RSdpResultArray results=aAttr;    
   719         iBTEngDiscovery->ParseRfcommChannel(results,iClientChannel);          
   721         iBTEngDiscovery->ParseRfcommChannel(results,iClientChannel);          
   720 
   722 
   721         iBTEngDiscovery->CancelRemoteSdpQuery();
   723         iBTEngDiscovery->CancelRemoteSdpQuery();
   780         iSendToBIPOnlyDevice = ETrue;
   782         iSendToBIPOnlyDevice = ETrue;
   781         iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),TUUID(KBTServiceImagingResponder));
   783         iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),TUUID(KBTServiceImagingResponder));
   782         iState = EBTSStarterFindingBIP;  
   784         iState = EBTSStarterFindingBIP;  
   783         iTriedOPP = ETrue;
   785         iTriedOPP = ETrue;
   784         }
   786         }
       
   787     else if (aErr==KErrNone && aAttr.Count()==0)
       
   788         {
       
   789         //This isn't KErrEoF so we aren't done yet, wait for future matches
       
   790         }
   785     else
   791     else
   786         {
   792         {
   787         delete iBTEngDiscovery;
   793         // Set destroyer AO active (destroys CBTEngDiscovery/CBTEngSdpQuery classes). This is done
       
   794         // to ensure that CBTEngDiscovery/CBTEngSdpQuery classes have finished all their activities,
       
   795         // callbacks etc.. Destructing it self is handled in CBTServiceDelayedDestroyer's RunL.
       
   796         iDelayedDestroyer->SetDestructPointer(iBTEngDiscovery);
       
   797         iDelayedDestroyer->GoActive();
       
   798         // Set iBTEngDiscovery pointer to zero. Pointer doesn't exist CBTServiceStarter point of view anymore.
   788         iBTEngDiscovery = NULL;    
   799         iBTEngDiscovery = NULL;    
   789         StopTransfer(EBTSConnectingFailed);    
   800         StopTransfer(EBTSConnectingFailed);    
   790         }    
   801         }    
   791     FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceAttributeSearchComplete() done"));               
   802     FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceAttributeSearchComplete() done"));               
   792     }
   803     }