homescreenpluginsrv/hspsmanager/client/hspsclientsession.cpp
branchRCL_3
changeset 23 ace62b58f4b2
parent 14 15e4dd19031c
--- a/homescreenpluginsrv/hspsmanager/client/hspsclientsession.cpp	Tue May 25 13:01:39 2010 +0300
+++ b/homescreenpluginsrv/hspsmanager/client/hspsclientsession.cpp	Wed Jun 09 10:01:25 2010 +0300
@@ -24,6 +24,9 @@
 #include "hspsthemeserver.h"
 #include "hspsclientsession.h"
 
+const TInt KRetryMax = 256;
+const TInt KRetryInterval = 100000; // 100ms
+
 // Standard server startup code
 static TInt StartServer()
     {
@@ -72,28 +75,37 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C TInt RhspsClientSession::Connect()
-    {
-    TVersion ver = TVersion(KhspsThemeServerMajorVersionNumber,KhspsThemeServerMinorVersionNumber,
-                                                             KhspsThemeServerBuildVersionNumber);    
-    TInt retry=2;
-    for (;;)
+    {     
+    TVersion ver = TVersion( KhspsThemeServerMajorVersionNumber,
+                             KhspsThemeServerMinorVersionNumber,
+                             KhspsThemeServerBuildVersionNumber);
+    
+    TInt retry = KRetryMax;
+    
+    for(;;)
         {
-        TInt r=CreateSession(KhspsThemeServerName, ver, KDefaultMessageSlots);
+        TInt r = CreateSession( KhspsThemeServerName, ver, KDefaultMessageSlots );
   
-        if (r!=KErrNotFound && r!=KErrServerTerminated)
+        if( r != KErrNotFound && r != KErrServerTerminated )
             {
             return r;
-            }
-        
-        if (--retry==0)
+            }        
+
+        retry--;
+        if( retry == 0 )
             {
             return r;
-            }
+            }        
         
-        r=StartServer();
-        if (r!=KErrNone && r!=KErrAlreadyExists)
+        r = StartServer();
+        if( r != KErrNone && r != KErrAlreadyExists )
             {
             return r;
+            }        
+        
+        if( r == KErrAlreadyExists )
+            {
+            User::After( KRetryInterval );
             }
         }
     }