predictivesearch/PcsServerClientAPI/src/RPsSession.cpp
branchRCL_3
changeset 13 a6539d1e8e43
parent 0 e686773b3f54
equal deleted inserted replaced
12:4ae315f230bc 13:a6539d1e8e43
     9 * Initial Contributors:
     9 * Initial Contributors:
    10 * Nokia Corporation - initial contribution.
    10 * Nokia Corporation - initial contribution.
    11 *
    11 *
    12 * Contributors:
    12 * Contributors:
    13 *
    13 *
    14 * Description:  This is the PS server client side interface implementation. 
    14 * Description:  This is the PS server client side interface implementation.
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    26 // Starts the server. Used only when the server is implemented as a transient.
    26 // Starts the server. Used only when the server is implemented as a transient.
    27 // ----------------------------------------------------------------------------
    27 // ----------------------------------------------------------------------------
    28 TInt StartServer()
    28 TInt StartServer()
    29 {
    29 {
    30     PRINT ( _L("Enter RPsSession->StartServer") );
    30     PRINT ( _L("Enter RPsSession->StartServer") );
    31     
    31 
    32 	RProcess server;
    32 	RProcess server;
    33     server.Create ( KPcsServerExeName, KNullDesC );
    33     server.Create ( KPcsServerExeName, KNullDesC );
    34 
    34 
    35     TRequestStatus status;
    35     TRequestStatus status;
    36     server.Rendezvous(status);
    36     server.Rendezvous(status);
    39     {
    39     {
    40 		server.Kill(0);
    40 		server.Kill(0);
    41 		server.Close();
    41 		server.Close();
    42 		return KErrGeneral;
    42 		return KErrGeneral;
    43     }
    43     }
    44     else 
    44     else
    45     {
    45     {
    46 		server.Resume();
    46 		server.Resume();
    47     }
    47     }
    48 
    48 
    49     User::WaitForRequest(status);
    49     User::WaitForRequest(status);
    50  
    50 
    51     if ( status != KErrNone )
    51     if ( status != KErrNone )
    52     {
    52     {
    53     	server.Close();
    53     	server.Close();
    54 		return status.Int();
    54 		return status.Int();
    55     }
    55     }
    62 
    62 
    63 // ----------------------------------------------------------------------------
    63 // ----------------------------------------------------------------------------
    64 // RPsSession::RPsSession
    64 // RPsSession::RPsSession
    65 // Constructor
    65 // Constructor
    66 // ----------------------------------------------------------------------------
    66 // ----------------------------------------------------------------------------
    67 RPsSession::RPsSession() : RSessionBase(), 
    67 RPsSession::RPsSession() : RSessionBase(),
    68                            iSearchQueryBufferPtr (0, 0),
    68                            iSearchQueryBufferPtr (0, 0),
    69                            iResultsBufferPtr (0, 0)
    69                            iResultsBufferPtr (0, 0)
    70 {
    70 {
    71     PRINT ( _L("Enter RPsSession::RPsSession") );          
    71     PRINT ( _L("Enter RPsSession::RPsSession") );
    72     PRINT ( _L("End RPsSession::RPsSession") );
    72     PRINT ( _L("End RPsSession::RPsSession") );
    73 }
    73 }
    74 
    74 
    75 
    75 
    76 // ----------------------------------------------------------------------------
    76 // ----------------------------------------------------------------------------
    77 // RPsSession::Connects to the search server
    77 // RPsSession::Connects to the search server
    78 // Returns the version number 
    78 // Returns the version number
    79 // ----------------------------------------------------------------------------
    79 // ----------------------------------------------------------------------------
    80 TInt RPsSession::Connect()
    80 TInt RPsSession::Connect()
    81 {
    81 {
    82     PRINT ( _L("Enter RPsSession::Connect") );
    82     PRINT ( _L("Enter RPsSession::Connect") );
    83     
    83 
    84     TInt err = CreateSession( KPcsServerName, Version() );
    84     TInt err = CreateSession( KPcsServerName, Version() );
    85     if ( err != KErrNone )
    85     if ( err != KErrNone )
    86         {
    86         {
    87         PRINT ( _L("Predictive Search server not running. Trying to start") );
    87         PRINT ( _L("Predictive Search server not running. Trying to start") );
    88         RMutex mutex;
    88         RMutex mutex;
   105         mutex.Signal();
   105         mutex.Signal();
   106         mutex.Close();
   106         mutex.Close();
   107         }
   107         }
   108 
   108 
   109     PRINT ( _L("End RPsSession::Connect") );
   109     PRINT ( _L("End RPsSession::Connect") );
   110     
   110 
   111     return err;
   111     return err;
   112 }
   112 }
   113 
   113 
   114 // ----------------------------------------------------------------------------
   114 // ----------------------------------------------------------------------------
   115 // RPsSession::Version
   115 // RPsSession::Version
   116 // Returns the version number 
   116 // Returns the version number
   117 // ----------------------------------------------------------------------------
   117 // ----------------------------------------------------------------------------
   118 TVersion RPsSession::Version() const
   118 TVersion RPsSession::Version() const
   119 {
   119 {
   120     return ( TVersion ( KPcsServerMajorVersionNumber,
   120     return ( TVersion ( KPcsServerMajorVersionNumber,
   121 		                KPcsServerMinorVersionNumber,
   121 		                KPcsServerMinorVersionNumber,
   127 // Initiate a search request.
   127 // Initiate a search request.
   128 // ----------------------------------------------------------------------------
   128 // ----------------------------------------------------------------------------
   129 void RPsSession::SetSearchSettingsL(const TDes8& aSettings)
   129 void RPsSession::SetSearchSettingsL(const TDes8& aSettings)
   130 {
   130 {
   131     PRINT ( _L("Enter RPsSession::SetSearchSettingsL") );
   131     PRINT ( _L("Enter RPsSession::SetSearchSettingsL") );
   132     
   132 
   133     TIpcArgs args(&aSettings);
   133     TIpcArgs args(&aSettings);
   134 
   134 
   135     // Send the search settings to the server. sync call
   135     // Send the search settings to the server. sync call
   136     TRequestStatus status;
   136     TRequestStatus status;
   137 	SendReceive(ESearchSettings, 
   137 	SendReceive(ESearchSettings,
   138 	            args,
   138 	            args,
   139 	            status);
   139 	            status);
   140     User::WaitForRequest(status);	            
   140     User::WaitForRequest(status);
   141     
   141 
   142     PRINT ( _L("End RPsSession::SetSearchSettingsL") );
   142     PRINT ( _L("End RPsSession::SetSearchSettingsL") );
   143 }
   143 }
   144 
   144 
   145 // ----------------------------------------------------------------------------
   145 // ----------------------------------------------------------------------------
   146 // RPsSession::SearchL
   146 // RPsSession::SearchL
   152 {
   152 {
   153     PRINT ( _L("Enter RPsSession::SearchL") );
   153     PRINT ( _L("Enter RPsSession::SearchL") );
   154 
   154 
   155     // Hold the pointer to buffers till the async request is complete
   155     // Hold the pointer to buffers till the async request is complete
   156     iSearchQueryBufferPtr.Set(aSearchQuery);
   156     iSearchQueryBufferPtr.Set(aSearchQuery);
   157     iResultsBufferPtr.Set(aResultsBuffer);     
   157     iResultsBufferPtr.Set(aResultsBuffer);
   158 
   158 
   159     TIpcArgs args(&iSearchQueryBufferPtr, &iResultsBufferPtr);
   159     TIpcArgs args(&iSearchQueryBufferPtr, &iResultsBufferPtr);
   160 
   160 
   161     aStatus = KRequestPending;
   161     aStatus = KRequestPending;
   162 
   162 
   163     // Initiate the search request
   163     // Initiate the search request
   164 	SendReceive(ESearch, 
   164 	SendReceive(ESearch,
   165 	            args, 
   165 	            args,
   166 	            aStatus );
   166 	            aStatus );
   167 	            
   167 
   168     PRINT ( _L("End RPsSession::SearchL") );	            
   168     PRINT ( _L("End RPsSession::SearchL") );
   169 }
   169 }
   170 
   170 
   171 // ----------------------------------------------------------------------------
   171 // ----------------------------------------------------------------------------
   172 // RPsSession::CancelSearch
   172 // RPsSession::CancelSearch
   173 // Send a request to cancel search. Synchronous.
   173 // Send a request to cancel search. Synchronous.
   174 // ----------------------------------------------------------------------------
   174 // ----------------------------------------------------------------------------
   175 void RPsSession::CancelSearch()
   175 void RPsSession::CancelSearch()
   176 {
   176 {
   177     PRINT ( _L("Enter RPsSession::CancelSearch") );
   177     PRINT ( _L("Enter RPsSession::CancelSearch") );
   178     
   178 
   179     TRequestStatus status;
   179     TRequestStatus status;
   180     
   180 
   181 	SendReceive(ECancelSearch, 
   181 	SendReceive(ECancelSearch,
   182 	            TIpcArgs(), 
   182 	            TIpcArgs(),
   183 	            status );
   183 	            status );
   184 	            
   184 
   185     User::WaitForRequest(status);	  
   185     User::WaitForRequest(status);
   186     
   186 
   187     PRINT ( _L("End RPsSession::CancelSearch") );          
   187     PRINT ( _L("End RPsSession::CancelSearch") );
   188 }
   188 }
   189 
   189 
   190 // ----------------------------------------------------------------------------
   190 // ----------------------------------------------------------------------------
   191 // RPsSession::SearchL
   191 // RPsSession::SearchL
   192 // Initiate a search request.
   192 // Initiate a search request.
   193 // ----------------------------------------------------------------------------
   193 // ----------------------------------------------------------------------------
   194 void RPsSession::SearchL(const TDes8& aSearchQuery,
   194 void RPsSession::SearchL(const TDes8& aSearchQuery,
   195                          const TDes8& aSearchData,
   195                          const TDes8& aSearchData,
   196                          TPtr8 aResultsBuffer)
   196                          TPtr8 aResultsBuffer)
   197 {
   197 {
   198     PRINT ( _L("Enter RPsSession::SearchL") );  
   198     PRINT ( _L("Enter RPsSession::SearchL") );
   199 
   199 
   200     TIpcArgs args(&aSearchQuery, &aSearchData, &aResultsBuffer);
   200     TIpcArgs args(&aSearchQuery, &aSearchData, &aResultsBuffer);
   201 
   201 
   202     TRequestStatus status;
   202     TRequestStatus status;
   203 
   203 
   204     // Initiate the search request
   204     // Initiate the search request
   205 	SendReceive(ESearchInput, 
   205 	SendReceive(ESearchInput,
   206 	            args, 
   206 	            args,
   207 	            status );
   207 	            status );
   208 	            
   208 
   209     User::WaitForRequest(status);	  	            
   209     User::WaitForRequest(status);
   210 	            
   210 
   211     PRINT ( _L("End RPsSession::SearchL") );	            
   211     PRINT ( _L("End RPsSession::SearchL") );
   212 }
   212 }
   213 
   213 
   214 // ----------------------------------------------------------------------------
   214 // ----------------------------------------------------------------------------
   215 // RPsSession::SearchMatchStringL
   215 // RPsSession::SearchMatchStringL
   216 // Initiate a search request.
   216 // Initiate a search request.
   217 // ----------------------------------------------------------------------------
   217 // ----------------------------------------------------------------------------
   218 void RPsSession::SearchMatchStringL(const TDes8& aSearchQuery,
   218 void RPsSession::SearchMatchStringL(const TDes8& aSearchQuery,
   219                          const TDes8& aSearchData,
   219                          const TDes8& aSearchData,
   220                          TDes& aResultsBuffer)
   220                          TDes& aResultsBuffer)
   221 {
   221 {
   222     PRINT ( _L("Enter RPsSession::SearchMatchStringL") );  
   222     PRINT ( _L("Enter RPsSession::SearchMatchStringL") );
   223 
   223 
   224     TIpcArgs args(&aSearchQuery, &aSearchData, &aResultsBuffer);
   224     TIpcArgs args(&aSearchQuery, &aSearchData, &aResultsBuffer);
   225 
   225 
   226     TRequestStatus status;
   226     TRequestStatus status;
   227 
   227 
   228     // Initiate the search request
   228     // Initiate the search request
   229     SendReceive(ESearchMatchString, 
   229     SendReceive(ESearchMatchString,
   230                 args, 
   230                 args,
   231                 status );
   231                 status );
   232                 
   232 
   233     User::WaitForRequest(status);                   
   233     User::WaitForRequest(status);
   234                 
   234 
   235     PRINT ( _L("End RPsSession::SearchMatchStringL") );                
   235     PRINT ( _L("End RPsSession::SearchMatchStringL") );
   236 }
   236 }
   237 
   237 
   238 // ----------------------------------------------------------------------------
   238 // ----------------------------------------------------------------------------
   239 // RPsSession::SendNewBufferL
   239 // RPsSession::SendNewBufferL
   240 // Send a new buffer to recover the search results.
   240 // Send a new buffer to recover the search results.
   242 void RPsSession::SendNewBufferL(TPtr8 aResultsBuffer,
   242 void RPsSession::SendNewBufferL(TPtr8 aResultsBuffer,
   243                                 TRequestStatus& aStatus)
   243                                 TRequestStatus& aStatus)
   244 {
   244 {
   245     PRINT ( _L("Enter RPsSession::SendNewBufferL") );
   245     PRINT ( _L("Enter RPsSession::SendNewBufferL") );
   246 
   246 
   247 	iResultsBufferPtr.Set(aResultsBuffer);     
   247 	iResultsBufferPtr.Set(aResultsBuffer);
   248 	
   248 
   249 	aStatus = KRequestPending;
   249 	aStatus = KRequestPending;
   250 
   250 
   251     // Search command is reused here. Hence there is no need to fill
   251     // Search command is reused here. Hence there is no need to fill
   252     // the search query.
   252     // the search query.
   253     TIpcArgs args(TIpcArgs::ENothing, 
   253     TIpcArgs args(TIpcArgs::ENothing,
   254                   &iResultsBufferPtr);
   254                   &iResultsBufferPtr);
   255 
   255 
   256 	SendReceive(ESearch, 
   256 	SendReceive(ESearch,
   257 	            args, 
   257 	            args,
   258 	            aStatus);     
   258 	            aStatus);
   259 	            
   259 
   260     PRINT ( _L("Enter RPsSession::SendNewBufferL") );	            
   260     PRINT ( _L("Enter RPsSession::SendNewBufferL") );
   261 }
   261 }
   262 
   262 
   263 // -----------------------------------------------------------------------------
   263 // -----------------------------------------------------------------------------
   264 // RPsSession::IsLanguageSupportedL()
   264 // RPsSession::IsLanguageSupportedL()
   265 // Checks if the language variant is supported by 
   265 // Checks if the language variant is supported by
   266 // the predictive search engine.
   266 // the predictive search engine.
   267 // Synchronous
   267 // Synchronous
   268 // -----------------------------------------------------------------------------
   268 // -----------------------------------------------------------------------------
   269 void RPsSession::IsLanguageSupportedL(const TDes8& aLanguage,
   269 void RPsSession::IsLanguageSupportedL(const TDes8& aLanguage,
   270                                       TPtr8 aResultsBuffer)
   270                                       TPtr8 aResultsBuffer)
   271 {
   271 {
   272 	PRINT ( _L("Enter RPsSession::IsLanguageSupportedL") );
   272 	PRINT ( _L("Enter RPsSession::IsLanguageSupportedL") );
   273 	
   273 
   274 	TIpcArgs args(&aLanguage, &aResultsBuffer);
   274 	TIpcArgs args(&aLanguage, &aResultsBuffer);
   275 	TRequestStatus status;
   275 	TRequestStatus status;
   276 
   276 
   277 	// initiate the request
   277 	// initiate the request
   278 	SendReceive(ELangSupport, 
   278 	SendReceive(ELangSupport,
   279 				args,
   279 				args,
   280 				status);
   280 				status);
   281 	
   281 
   282 	User::WaitForRequest(status);
   282 	User::WaitForRequest(status);
   283 	
   283 
   284 	PRINT ( _L("End RPsSession::IsLanguageSupportedL") );
   284 	PRINT ( _L("End RPsSession::IsLanguageSupportedL") );
   285 }
   285 }
   286 
   286 
   287 // ----------------------------------------------------------------------------
   287 // ----------------------------------------------------------------------------
   288 // RPsSession::GetDataOrderL
   288 // RPsSession::GetDataOrderL
   296     TIpcArgs args(&aURI, &aResultsBuffer);
   296     TIpcArgs args(&aURI, &aResultsBuffer);
   297 
   297 
   298     TRequestStatus status;
   298     TRequestStatus status;
   299 
   299 
   300     // Initiate the request
   300     // Initiate the request
   301 	SendReceive(EGetDataOrder, 
   301 	SendReceive(EGetDataOrder,
   302 	            args, 
   302 	            args,
   303 	            status );
   303 	            status );
   304 	            
   304 
   305     User::WaitForRequest(status); 
   305     User::WaitForRequest(status);
   306 	            
   306 
   307     PRINT ( _L("End RPsSession::GetDataOrderL") );	            
   307     PRINT ( _L("End RPsSession::GetDataOrderL") );
   308 }
   308 }
   309 
   309 
   310 // ----------------------------------------------------------------------------
   310 // ----------------------------------------------------------------------------
   311 // RPsSession::GetSortOrderL
   311 // RPsSession::GetSortOrderL
   312 // Send a request to the PS server to recover sort order supported by a store.
   312 // Send a request to the PS server to recover sort order supported by a store.
   319     TIpcArgs args(&aURI, &aResultsBuffer);
   319     TIpcArgs args(&aURI, &aResultsBuffer);
   320 
   320 
   321     TRequestStatus status;
   321     TRequestStatus status;
   322 
   322 
   323     // Initiate the request
   323     // Initiate the request
   324 	SendReceive(EGetSortOrder, 
   324 	SendReceive(EGetSortOrder,
   325 	            args, 
   325 	            args,
   326 	            status );
   326 	            status );
   327 	            
   327 
   328     User::WaitForRequest(status); 
   328     User::WaitForRequest(status);
   329 	            
   329 
   330     PRINT ( _L("End RPsSession::GetSortOrderL") );	            
   330     PRINT ( _L("End RPsSession::GetSortOrderL") );
   331 }
   331 }
   332 
   332 
   333 // ----------------------------------------------------------------------------
   333 // ----------------------------------------------------------------------------
   334 // RPsSession::ChangeSortOrderL
   334 // RPsSession::ChangeSortOrderL
   335 // Send a request to the PS server to set sort order for a store.
   335 // Send a request to the PS server to set sort order for a store.
   341     TIpcArgs args(&aInput);
   341     TIpcArgs args(&aInput);
   342 
   342 
   343     TRequestStatus status;
   343     TRequestStatus status;
   344 
   344 
   345     // Initiate the request
   345     // Initiate the request
   346 	SendReceive(ESetSortOrder, 
   346 	SendReceive(ESetSortOrder,
   347 	            args, 
   347 	            args,
   348 	            status );
   348 	            status );
   349 	            
   349 
   350     User::WaitForRequest(status); 
   350     User::WaitForRequest(status);
   351 	            
   351 
   352     PRINT ( _L("End RPsSession::ChangeSortOrderL") );	            
   352     PRINT ( _L("End RPsSession::ChangeSortOrderL") );
       
   353 }
       
   354 
       
   355 // ----------------------------------------------------------------------------
       
   356 // RPsSession::GetAdaptiveGridL
       
   357 // Initiate the Adaptive Grid request.
       
   358 // ----------------------------------------------------------------------------
       
   359 void RPsSession::GetAdaptiveGridL( const TDesC8& aURIs,
       
   360                                    const TBool aCompanyName,
       
   361                                    TDes& aResultsBuffer )
       
   362 {
       
   363     PRINT ( _L("Enter RPsSession::GetAdaptiveGrid") );
       
   364 
       
   365     TIpcArgs args( &aURIs, aCompanyName, &aResultsBuffer );
       
   366 
       
   367     TRequestStatus status;
       
   368 
       
   369     // Initiate the Adaptive Grid request
       
   370     SendReceive( EGetAdaptiveGrid,
       
   371                  args,
       
   372                  status );
       
   373 
       
   374     User::WaitForRequest(status);
       
   375 
       
   376     PRINT ( _L("End RPsSession::GetAdaptiveGrid") );
   353 }
   377 }
   354 
   378 
   355 // ----------------------------------------------------------------------------
   379 // ----------------------------------------------------------------------------
   356 // RPsSession::ShutdownServerL
   380 // RPsSession::ShutdownServerL
   357 // Shutsdown the PS Server. Synchronous.
   381 // Shutsdown the PS Server. Synchronous.
   358 // ----------------------------------------------------------------------------
   382 // ----------------------------------------------------------------------------
   359 void RPsSession::ShutdownServerL()
   383 void RPsSession::ShutdownServerL()
   360 {
   384 {
   361     PRINT ( _L("Enter RPsSession::ShutdownServerL") );
   385     PRINT ( _L("Enter RPsSession::ShutdownServerL") );
   362     
   386 
   363     TIpcArgs args;
   387     TIpcArgs args;
   364     
   388 
   365     TRequestStatus status;
   389     TRequestStatus status;
   366     SendReceive(EShutdown, args, status );
   390     SendReceive(EShutdown, args, status );
   367     User::WaitForRequest(status);
   391     User::WaitForRequest(status);
   368     
   392 
   369     PRINT ( _L("End RPsSession::ShutdownServerL") );    
   393     PRINT ( _L("End RPsSession::ShutdownServerL") );
   370 }
   394 }
   371 
   395 
   372 // End of File
   396 // End of File