locationmanager/server/src/clocationmanagerserver.cpp
changeset 43 c5e73110f733
parent 40 910a23996aa0
equal deleted inserted replaced
40:910a23996aa0 43:c5e73110f733
    74     TInt ret( KErrNoMemory );
    74     TInt ret( KErrNoMemory );
    75     if( cleanup )
    75     if( cleanup )
    76         {
    76         {
    77         TRAP( ret, RunServerL() );
    77         TRAP( ret, RunServerL() );
    78         delete cleanup;
    78         delete cleanup;
       
    79         cleanup = NULL;
    79         }
    80         }
    80     return ret;
    81     return ret;
    81     }
    82     }
    82 
    83 
    83 // --------------------------------------------------------------------------
    84 // --------------------------------------------------------------------------
    97 // CLocationManagerServer::CLocationManagerServer()
    98 // CLocationManagerServer::CLocationManagerServer()
    98 // C++ constructor.
    99 // C++ constructor.
    99 // --------------------------------------------------------------------------
   100 // --------------------------------------------------------------------------
   100 //
   101 //
   101 CLocationManagerServer::CLocationManagerServer() 
   102 CLocationManagerServer::CLocationManagerServer() 
   102     : CPolicyServer( CActive::EPriorityStandard, 
   103     : CPolicyServer( KLocManagerSessionPriority, 
   103                      KLocationManagerPolicy, 
   104                      KLocationManagerPolicy, 
   104                      ESharableSessions ),
   105                      ESharableSessions ),
   105                      iASW(NULL),
   106                      iASW(NULL),
   106                      iTimer( NULL ),
   107                      iTimer( NULL ),
   107 			         iSessionReady( EFalse ),
   108 			         iSessionReady( EFalse ),
   131 void CLocationManagerServer::ConstructL()
   132 void CLocationManagerServer::ConstructL()
   132     {
   133     {
   133     LOG ("CLocationManagerServer::ConstructL() begin");
   134     LOG ("CLocationManagerServer::ConstructL() begin");
   134     
   135     
   135     StartL( KLocServerName );
   136     StartL( KLocServerName );
   136     
       
   137     RProcess process;
       
   138     process.SetPriority( EPriorityBackground );
       
   139     process.Close();
       
   140 
   137 
   141     // initialize etel
   138     // initialize etel
   142     InitialisePhoneL();
   139     InitialisePhoneL();
   143     
   140     
   144 #ifdef LOC_REVERSEGEOCODE
   141 #ifdef LOC_REVERSEGEOCODE
   147 
   144 
   148     iASW = new (ELeave) CActiveSchedulerWait();
   145     iASW = new (ELeave) CActiveSchedulerWait();
   149     
   146     
   150     iNwRegistrationStatusHandler = CNwRegistrationStatusHandler::NewL(iPhone);
   147     iNwRegistrationStatusHandler = CNwRegistrationStatusHandler::NewL(iPhone);
   151     
   148     
   152     iMdeSession = CMdESession::NewL( *this );
       
   153     iLocationRecord = CLocationRecord::NewL(*this, iPhone);
   149     iLocationRecord = CLocationRecord::NewL(*this, iPhone);
   154     iTrackLog = CTrackLog::NewL();
   150     iTrackLog = CTrackLog::NewL();
   155     
   151     iMdeSession = CMdESession::NewL( *this );   
   156     iASW->Start();
   152 
       
   153     iLocationRecord->SetObserver( this );
       
   154     
       
   155     iLocationRecord->SetAddObserver( iTrackLog );
       
   156     
       
   157     iTrackLog->AddGpxObserver( this );
       
   158     
       
   159     CRepository* repository = CRepository::NewLC( KRepositoryUid );
       
   160     TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay );
       
   161     
       
   162     LOG1("iLocManStopDelay:%d", iLocManStopDelay);
       
   163     
       
   164     if ( err != KErrNone )
       
   165         {
       
   166         LOG1("iLocManStopDelay err:%d", err);
       
   167         iLocManStopDelay = KLocationTrailShutdownDelay;
       
   168         }
       
   169 
       
   170     err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay );
       
   171     CleanupStack::PopAndDestroy( repository );
       
   172     
       
   173     LOG1("iLocManStopRemapDelay:%d", iLocManStopRemapDelay);
       
   174     
       
   175     if ( err != KErrNone )
       
   176         {
       
   177         LOG1("iLocManStopRemapDelay err:%d", err);
       
   178         iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay;
       
   179         }
       
   180 
       
   181     if( !iSessionReady )
       
   182         {
       
   183         iASW->Start();      
       
   184         }
       
   185 
   157     delete iASW;
   186     delete iASW;
   158     iASW = NULL;
   187     iASW = NULL;   
   159     if(iSessionReady)
   188 
       
   189     if( iSessionReady )
   160         {
   190         {
   161         LOG("Session is ready to give service");
   191         LOG("Session is ready to give service");
   162         
       
   163         iLocationRecord->SetObserver( this );
       
   164         
       
   165         iLocationRecord->SetAddObserver( iTrackLog );
       
   166         
       
   167         iTrackLog->AddGpxObserver( this );
       
   168         
       
   169         CRepository* repository = CRepository::NewLC( KRepositoryUid );
       
   170     	TInt err = repository->Get( KLocationTrailShutdownTimer, iLocManStopDelay );
       
   171     	
       
   172         LOG1("iLocManStopDelay:%d", iLocManStopDelay);
       
   173         
       
   174         if ( err != KErrNone )
       
   175         	{
       
   176             LOG1("iLocManStopDelay err:%d", err);
       
   177             iLocManStopDelay = KLocationTrailShutdownDelay;
       
   178         	}
       
   179 
       
   180         err = repository->Get( KLocationTrailRemapShutdownTimer, iLocManStopRemapDelay );
       
   181         CleanupStack::PopAndDestroy( repository );
       
   182         
       
   183         LOG1("iLocManStopRemapDelay:%d", iLocManStopRemapDelay);
       
   184         
       
   185         if ( err != KErrNone )
       
   186             {
       
   187             LOG1("iLocManStopRemapDelay err:%d", err);
       
   188             iLocManStopRemapDelay = KLocationTrailRemapShutdownDelay;
       
   189             }
       
   190         
       
   191         //Create the instance of the geotagging timer object
   192         //Create the instance of the geotagging timer object
   192         // Create timer, if n/w or reverse geo code based feature flag is enabled
   193         // Create timer, if n/w or reverse geo code based feature flag is enabled
   193 #if defined(LOC_REVERSEGEOCODE) || defined(LOC_GEOTAGGING_CELLID)
   194 #if defined(LOC_REVERSEGEOCODE) || defined(LOC_GEOTAGGING_CELLID)
   194         iGeoTagTimer = CLocationGeoTagTimerAO::NewL(*iMdeSession, *this);
   195         iGeoTagTimer = CLocationGeoTagTimerAO::NewL(*iMdeSession, *this);
   195         //Schedule a task for geotagging every day at 3.00 AM
   196         //Schedule a task for geotagging every day at 3.00 AM
   197 #endif        
   198 #endif        
   198         }
   199         }
   199     else
   200     else
   200         {
   201         {
   201         LOG("Unable to open MDE session. Closing..");
   202         LOG("Unable to open MDE session. Closing..");
   202         User::Leave(KErrCouldNotConnect);
   203         User::Leave( KErrCouldNotConnect );
   203         }
   204         }
       
   205         
       
   206     RProcess process;
       
   207     process.SetPriority( EPriorityBackground );
       
   208     process.Close();
       
   209     
   204     LOG ("CLocationManagerServer::ConstructL() end");
   210     LOG ("CLocationManagerServer::ConstructL() end");
   205     }
   211     }
   206 
   212 
   207 // --------------------------------------------------------------------------
   213 // --------------------------------------------------------------------------
   208 // CLocationManagerServer::~CLocationManagerServer()
   214 // CLocationManagerServer::~CLocationManagerServer()
   225     iLocationRecord = NULL;
   231     iLocationRecord = NULL;
   226     delete iTrackLog;    
   232     delete iTrackLog;    
   227     iTrackLog = NULL;
   233     iTrackLog = NULL;
   228     delete iTimer;
   234     delete iTimer;
   229     iTimer = NULL;
   235     iTimer = NULL;
       
   236     delete iRelationQuery;
       
   237     iRelationQuery = NULL;
   230     delete iASW;
   238     delete iASW;
   231     iASW = NULL;
   239     iASW = NULL;
   232     delete iMdeSession;
   240     delete iMdeSession;
   233     iMdeSession = NULL;
   241     iMdeSession = NULL;
   234     delete iNwRegistrationStatusHandler;
   242     delete iNwRegistrationStatusHandler;
  1106 						{
  1114 						{
  1107 						aError = KErrNotFound;
  1115 						aError = KErrNotFound;
  1108 						}
  1116 						}
  1109 					iCopyReqs[i].iMessage.Complete( aError );
  1117 					iCopyReqs[i].iMessage.Complete( aError );
  1110 					delete iCopyReqs[i].iQuery;
  1118 					delete iCopyReqs[i].iQuery;
       
  1119 					iCopyReqs[i].iQuery = NULL;
  1111 					iCopyReqs.Remove( i );
  1120 					iCopyReqs.Remove( i );
  1112 					break;
  1121 					break;
  1113 					}
  1122 					}
  1114 				}
  1123 				}
  1115 			}
  1124 			}
  1152     	{
  1161     	{
  1153     	if ( iCopyReqs[i].iQuery == &aQuery )
  1162     	if ( iCopyReqs[i].iQuery == &aQuery )
  1154     		{
  1163     		{
  1155     		iCopyReqs[i].iMessage.Complete( KErrNone );
  1164     		iCopyReqs[i].iMessage.Complete( KErrNone );
  1156     		delete iCopyReqs[i].iQuery;
  1165     		delete iCopyReqs[i].iQuery;
       
  1166     		iCopyReqs[i].iQuery = NULL;
  1157     		iCopyReqs.Remove( i );
  1167     		iCopyReqs.Remove( i );
  1158     		break;
  1168     		break;
  1159     		}
  1169     		}
  1160     	}
  1170     	}
  1161 	}
  1171 	}