21 #include <e32svr.h> |
21 #include <e32svr.h> |
22 #include "hsps_builds_cfg.hrh" |
22 #include "hsps_builds_cfg.hrh" |
23 #include "hspsthememanagement.h" |
23 #include "hspsthememanagement.h" |
24 #include "hspsthemeserver.h" |
24 #include "hspsthemeserver.h" |
25 #include "hspsclientsession.h" |
25 #include "hspsclientsession.h" |
|
26 |
|
27 const TInt KRetryMax = 256; |
|
28 const TInt KRetryInterval = 100000; // 100ms |
26 |
29 |
27 // Standard server startup code |
30 // Standard server startup code |
28 static TInt StartServer() |
31 static TInt StartServer() |
29 { |
32 { |
30 const TUidType serverUid(KNullUid,KNullUid,KhspsThemeServerUid3); |
33 const TUidType serverUid(KNullUid,KNullUid,KhspsThemeServerUid3); |
70 // This is the standard retry pattern for server connection |
73 // This is the standard retry pattern for server connection |
71 // (other items were commented in a header). |
74 // (other items were commented in a header). |
72 // ----------------------------------------------------------------------------- |
75 // ----------------------------------------------------------------------------- |
73 // |
76 // |
74 EXPORT_C TInt RhspsClientSession::Connect() |
77 EXPORT_C TInt RhspsClientSession::Connect() |
75 { |
78 { |
76 TVersion ver = TVersion(KhspsThemeServerMajorVersionNumber,KhspsThemeServerMinorVersionNumber, |
79 TVersion ver = TVersion( KhspsThemeServerMajorVersionNumber, |
77 KhspsThemeServerBuildVersionNumber); |
80 KhspsThemeServerMinorVersionNumber, |
78 TInt retry=2; |
81 KhspsThemeServerBuildVersionNumber); |
79 for (;;) |
82 |
|
83 TInt retry = KRetryMax; |
|
84 |
|
85 for(;;) |
80 { |
86 { |
81 TInt r=CreateSession(KhspsThemeServerName, ver, KDefaultMessageSlots); |
87 TInt r = CreateSession( KhspsThemeServerName, ver, KDefaultMessageSlots ); |
82 |
88 |
83 if (r!=KErrNotFound && r!=KErrServerTerminated) |
89 if( r != KErrNotFound && r != KErrServerTerminated ) |
84 { |
90 { |
85 return r; |
91 return r; |
86 } |
92 } |
87 |
93 |
88 if (--retry==0) |
94 retry--; |
|
95 if( retry == 0 ) |
89 { |
96 { |
90 return r; |
97 return r; |
91 } |
98 } |
92 |
99 |
93 r=StartServer(); |
100 r = StartServer(); |
94 if (r!=KErrNone && r!=KErrAlreadyExists) |
101 if( r != KErrNone && r != KErrAlreadyExists ) |
95 { |
102 { |
96 return r; |
103 return r; |
|
104 } |
|
105 |
|
106 if( r == KErrAlreadyExists ) |
|
107 { |
|
108 User::After( KRetryInterval ); |
97 } |
109 } |
98 } |
110 } |
99 } |
111 } |
100 |
112 |
101 // ----------------------------------------------------------------------------- |
113 // ----------------------------------------------------------------------------- |