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 |