metadataengine/client/src/mdeenginesession.cpp
changeset 23 33ae025ac1e8
parent 3 b73a2e62868f
equal deleted inserted replaced
21:50bf9db68373 23:33ae025ac1e8
    30     {
    30     {
    31    	iIsSessionOpen = EFalse;
    31    	iIsSessionOpen = EFalse;
    32    	iIsSessionProcessOpen = EFalse;
    32    	iIsSessionProcessOpen = EFalse;
    33     }
    33     }
    34 
    34 
    35 void RMdEEngineSession::OpenL(TRequestStatus& aStatus)
    35 void RMdEEngineSession::OpenL()
    36     {
    36     {
    37     TFindServer findMdEServer( KMdSServerName );
    37     TFindServer findMdEServer( KMdSServerName );
    38     TFullName name;
    38     TFullName name;
    39 
    39     
    40     const TInt result = findMdEServer.Next( name );
    40     TInt result = findMdEServer.Next( name );
       
    41     // Server already running
    41     if( result == KErrNone )
    42     if( result == KErrNone )
    42         {
    43         {
    43         // Server already running
    44         TFindProcess findProcess( KMdSServerProcessString );
    44 		iIsSessionProcessOpen = ETrue;
    45         result = findProcess.Next( name );
    45 
    46         if ( result == KErrNone )
    46 		TRequestStatus* status = &aStatus;
    47             {
    47         User::RequestComplete( status, KErrNone );
    48             result = iServerProcess.Open( name );
    48 
    49             if( result != KErrNone )
    49         return;
    50                 {
       
    51                 User::Leave( KErrNotReady );
       
    52                 }
       
    53             iIsSessionProcessOpen = ETrue;
       
    54             return;
       
    55             }
       
    56         else
       
    57             {
       
    58             User::Leave( KErrNotReady );
       
    59             }
    50         }
    60         }
    51 
    61 
    52     User::LeaveIfError( iServerProcess.Create( KMdSServerFilename, 
    62     User::LeaveIfError( iServerProcess.Create( KMdSServerName, 
    53     		KNullDesC ) );
    63     		KNullDesC ) );  
    54 
    64      
    55 	iIsSessionProcessOpen = ETrue;
    65     TRequestStatus stat( 0 );
    56 
    66     iServerProcess.Rendezvous( stat );
    57     iServerProcess.Rendezvous( aStatus );
    67 	
    58 
    68     if( stat != KRequestPending )
    59     if( aStatus != KRequestPending )
       
    60     	{
    69     	{
    61         iServerProcess.Kill( 0 );   // abort startup
    70         iServerProcess.Kill( 0 );   // abort startup
    62     	}
    71     	}
    63     else
    72     else
    64     	{
    73     	{
    65         iServerProcess.Resume();    // logon OK - start the server   
    74         iServerProcess.Resume();    // logon OK - start the server   
    66     	}
    75     	}	
    67     }
    76 
    68 
    77     User::WaitForRequest( stat ); 
    69 void RMdEEngineSession::OpenCancel(TRequestStatus& aStatus)
    78     
       
    79     iIsSessionProcessOpen = ETrue;
       
    80     }
       
    81 
       
    82 void RMdEEngineSession::OpenCancel()
    70 	{
    83 	{
    71 	if( iIsSessionProcessOpen )
    84 	if( iIsSessionProcessOpen )
    72 		{		
    85 		{		
    73 		iServerProcess.RendezvousCancel( aStatus );
       
    74 
       
    75 		iServerProcess.Close();
    86 		iServerProcess.Close();
    76 	
    87 	
    77 		iIsSessionProcessOpen = EFalse;
    88 		iIsSessionProcessOpen = EFalse;
    78 		}
    89 		}
    79 	}
    90 	}
    80 
    91 
    81 void RMdEEngineSession::ConnectL()
    92 void RMdEEngineSession::ConnectL()
    82     {
    93     {
    83     if( iIsSessionProcessOpen )
    94     if( iIsSessionProcessOpen )
    84     	{
    95     	{
    85 	    TBool error = (iServerProcess.ExitType() != EExitPending);
    96 	    const TBool error = (iServerProcess.ExitType() != EExitPending);
    86 
    97 
    87     	iServerProcess.Close();
    98     	iServerProcess.Close();
    88 
    99 
    89 		iIsSessionProcessOpen = EFalse;
   100 		iIsSessionProcessOpen = EFalse;
    90 	
   101 	
   107     	{
   118     	{
   108     	User::LeaveIfError( KErrBadHandle );
   119     	User::LeaveIfError( KErrBadHandle );
   109     	}
   120     	}
   110     }
   121     }
   111 
   122 
   112 TInt RMdEEngineSession::Shutdown()
   123 void RMdEEngineSession::Shutdown()
   113     {
   124     {
   114     TInt err = KErrNone;
       
   115 
       
   116     if( iIsSessionOpen )
   125     if( iIsSessionOpen )
   117     	{
   126     	{
   118 	    err = SendReceive( EShutdown );
   127 	    SendReceive( EShutdown );
   119     	}
   128     	}
   120 
   129 
   121 	if( iIsSessionProcessOpen )
   130 	if( iIsSessionProcessOpen )
   122 		{		
   131 		{		
   123 		iServerProcess.Close();
   132 		iServerProcess.Close();
   124 
       
   125 		iIsSessionProcessOpen = EFalse;
       
   126 		}
   133 		}
   127 
       
   128     return err;
       
   129     }
   134     }
   130 
   135 
   131 TVersion RMdEEngineSession::Version() const
   136 TVersion RMdEEngineSession::Version() const
   132     {
   137     {
   133     return( TVersion( KMdSServMajorVersionNumber,
   138     return( TVersion( KMdSServMajorVersionNumber,