messagingapp/msgappfw/client/src/rcssession.cpp
changeset 70 a15d9966050f
parent 44 36f374c67aa8
equal deleted inserted replaced
61:8ba0afbb4637 70:a15d9966050f
    21 #include <rcssession.h>
    21 #include <rcssession.h>
    22 
    22 
    23 // USER INCLUDES
    23 // USER INCLUDES
    24 #include "ccsdebug.h"
    24 #include "ccsdebug.h"
    25 
    25 
       
    26 const TInt KCsServerRetryTimeout  = 100000;
       
    27 const TInt KCsServerRetryCount    = 5;
    26 // ----------------------------------------------------------------------------
    28 // ----------------------------------------------------------------------------
    27 // StartServer
    29 // StartServer
    28 // Starts the server. Used only when the server is implemented as a transient.
    30 // Starts the server. Used only when the server is implemented as a transient.
    29 // ----------------------------------------------------------------------------
    31 // ----------------------------------------------------------------------------
    30 TInt StartServer()
    32 TInt StartServer()
    52         server.Resume();
    54         server.Resume();
    53     }
    55     }
    54 
    56 
    55     User::WaitForRequest(status);
    57     User::WaitForRequest(status);
    56 
    58 
    57     if (status != KErrNone)
    59     err = (server.ExitType() == EExitPanic ) ? KErrGeneral : status.Int();
    58     {
    60     server.Close();
    59         server.Close();
       
    60         return status.Int();
       
    61     }
       
    62 
       
    63     PRINT ( _L("End RCsSession->StartServer") );
    61     PRINT ( _L("End RCsSession->StartServer") );
    64 
    62     return err;
    65     return KErrNone;
       
    66 }
    63 }
    67 // ============================== MEMBER FUNCTIONS ============================
    64 // ============================== MEMBER FUNCTIONS ============================
    68 
    65 
    69 // ----------------------------------------------------------------------------
    66 // ----------------------------------------------------------------------------
    70 // RCsSession::RCsSession
    67 // RCsSession::RCsSession
    82 // RCsSession::Connects to the conversation server
    79 // RCsSession::Connects to the conversation server
    83 // Returns the version number
    80 // Returns the version number
    84 // ----------------------------------------------------------------------------
    81 // ----------------------------------------------------------------------------
    85 TInt RCsSession::Connect()
    82 TInt RCsSession::Connect()
    86 {
    83 {
    87     TInt err = CreateSession(KCsServerName, Version());
    84     TInt retry = KCsServerRetryCount;
    88 
    85     FOREVER
    89     if (err != KErrNone)
    86     {
    90     {
    87          TInt err = CreateSession(KCsServerName, Version());
    91         PRINT ( _L("conversation server not running. Trying to start") );
    88          if( err != KErrNotFound && err != KErrServerTerminated && err != KErrServerBusy )
    92 
    89          {
    93         err = StartServer();
    90              return err;
    94 
    91          }
    95         if (err != KErrNone)
    92          if( --retry == 0 )
    96         {
    93          {
    97             PRINT ( _L("Conversation server startup failed") );
    94              return err;
    98             PRINT1 ( _L("End RCsSession::Connect. Error code = %d"), err );
    95          }
    99             return err;
    96          if( err == KErrServerBusy )
   100         }
    97          {
   101 
    98              User::After(KCsServerRetryTimeout);
   102         PRINT ( _L("Conversation server startup successful") );
    99          }
   103 
   100          PRINT ( _L("conversation server not running. Trying to start") );
   104         err = CreateSession(KCsServerName, Version());
   101          err = StartServer();
   105     }
   102          if( err != KErrNone && err != KErrAlreadyExists )
   106 
   103          {
   107     return err;
   104              PRINT ( _L("Conversation server startup failed") );
       
   105              return err;
       
   106          }
       
   107          PRINT ( _L("Conversation server startup successful") );
       
   108     }
   108 }
   109 }
   109 
   110 
   110 // ----------------------------------------------------------------------------
   111 // ----------------------------------------------------------------------------
   111 // RCsSession::Version
   112 // RCsSession::Version
   112 // Returns the version number
   113 // Returns the version number