13 * |
13 * |
14 * Description: MPM server client interface |
14 * Description: MPM server client interface |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 |
|
19 /** |
18 /** |
20 @file rmpm.cpp |
19 @file rmpm.cpp |
21 Mobility Policy Manager server client interface. |
20 Mobility Policy Manager server client interface. |
22 */ |
21 */ |
23 |
22 |
24 // INCLUDE FILES |
|
25 #include "rmpm.h" |
23 #include "rmpm.h" |
26 #include "mpmcommon.h" |
24 #include "mpmcommon.h" |
27 #include "mpmlauncher.h" |
25 #include "mpmlauncher.h" |
28 #include "mpmlogger.h" |
26 #include "mpmlogger.h" |
29 |
27 |
30 // ============================= LOCAL FUNCTIONS =============================== |
28 |
31 |
29 // ----------------------------------------------------------------------------- |
32 // ----------------------------------------------------------------------------- |
30 // Panic |
33 // Panic |
|
34 // Panics the client in case of programming error. |
31 // Panics the client in case of programming error. |
35 // ----------------------------------------------------------------------------- |
32 // ----------------------------------------------------------------------------- |
36 // |
33 // |
37 void Panic( TInt aPanic ) |
34 void Panic( TInt aPanic ) |
38 { |
35 { |
39 User::Panic( KPanicCategory, aPanic ); |
36 User::Panic( KPanicCategory, aPanic ); |
40 } |
37 } |
41 |
38 |
42 |
|
43 // ============================ MEMBER FUNCTIONS =============================== |
|
44 |
|
45 // ----------------------------------------------------------------------------- |
39 // ----------------------------------------------------------------------------- |
46 // RMPM::LaunchServer |
40 // RMPM::LaunchServer |
47 // ----------------------------------------------------------------------------- |
41 // ----------------------------------------------------------------------------- |
48 // |
42 // |
49 EXPORT_C TInt RMPM::LaunchServer() |
43 EXPORT_C TInt RMPM::LaunchServer() |
50 { |
44 { |
51 return KErrNone; |
45 return KErrNone; |
52 } |
46 } |
53 |
47 |
54 |
|
55 // ----------------------------------------------------------------------------- |
48 // ----------------------------------------------------------------------------- |
56 // RMPM::Connect |
49 // RMPM::Connect |
57 // ----------------------------------------------------------------------------- |
50 // ----------------------------------------------------------------------------- |
58 // |
51 // |
59 EXPORT_C TInt RMPM::Connect( ) |
52 EXPORT_C TInt RMPM::Connect() |
60 { |
53 { |
61 TRequestStatus status; |
54 TRequestStatus status; |
62 Connect( status ); |
55 Connect( status ); |
63 User::WaitForRequest( status ); |
56 User::WaitForRequest( status ); |
64 TInt err = status.Int(); |
57 TInt err = status.Int(); |
65 if ( err != KErrNone ) |
58 if ( err != KErrNone ) |
66 { |
59 { |
67 iConnected = EFalse; |
60 iConnected = EFalse; |
68 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err ) |
61 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err ) |
69 } |
62 } |
70 return err; |
63 return err; |
71 } |
64 } |
72 |
65 |
73 // ----------------------------------------------------------------------------- |
66 // ----------------------------------------------------------------------------- |
74 // RMPM::Connect |
67 // RMPM::Connect |
79 TInt err( KErrNone ); |
72 TInt err( KErrNone ); |
80 |
73 |
81 if ( !iConnected ) |
74 if ( !iConnected ) |
82 { |
75 { |
83 MPMLOGSTRING( "RMPM::Connect: Client connecting to MPM Server" ) |
76 MPMLOGSTRING( "RMPM::Connect: Client connecting to MPM Server" ) |
84 err = CreateSession( |
77 TVersion version = Version(); |
|
78 err = CreateSession( |
85 KMPMServerName, |
79 KMPMServerName, |
86 Version(), |
80 version, |
87 KNumMessageSlots, |
81 KNumMessageSlots, |
88 EIpcSession_Unsharable, |
82 EIpcSession_Unsharable, |
89 (TSecurityPolicy*)0, |
83 (TSecurityPolicy*)0, |
90 &aStatus ); |
84 &aStatus ); |
91 if ( err != KErrNone ) |
85 if ( err != KErrNone ) |
92 { |
86 { |
93 //Connecting failed, probably because this is the first Connect() attempt. |
87 // Connecting failed, probably because this is the first Connect() attempt. |
94 TVersion version = Version(); |
88 MPMLOGSTRING3("Mobility Policy Manager version %d.%d", version.iMajor, version.iMinor ) |
95 MPMLOGSTRING3("Mobility Policy Manager version %d.%d", version.iMajor, |
89 err = MPMLauncher::LaunchServer( KMPMServerImg, |
96 version.iMinor ) |
90 KServerUid2, |
97 err = MPMLauncher::LaunchServer( KMPMServerImg, |
|
98 KServerUid2, |
|
99 KServerUid3 ); |
91 KServerUid3 ); |
100 if ( err != KErrNone ) |
92 if ( err != KErrNone ) |
101 { |
93 { |
102 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in LaunchServer", err ) |
94 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in LaunchServer", err ) |
103 } |
95 } |
104 else |
96 else |
105 { |
97 { |
106 err = CreateSession( |
98 err = CreateSession( |
107 KMPMServerName, |
99 KMPMServerName, |
108 Version(), |
100 version, |
109 KNumMessageSlots, |
101 KNumMessageSlots, |
110 EIpcSession_Unsharable, |
102 EIpcSession_Unsharable, |
111 (TSecurityPolicy*)0, |
103 (TSecurityPolicy*)0, |
112 &aStatus ); |
104 &aStatus ); |
113 #ifdef _DEBUG |
105 #ifdef _DEBUG |
114 if (err != KErrNone) |
106 if ( err != KErrNone ) |
|
107 { |
115 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err ) |
108 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in CreateSession", err ) |
|
109 } |
116 #endif |
110 #endif |
117 } |
111 } |
118 } |
112 } |
119 |
113 |
120 //This can't be else, in case the inner CreateSession() succeeds. |
114 // This can't be else, in case the inner CreateSession() succeeds. |
121 if (err == KErrNone) |
115 if ( err == KErrNone ) |
122 { |
116 { |
123 // session ok but waiting for MPM startup. |
117 // Session ok but waiting for MPM startup. |
124 // We have to assume that it'll be ok. |
118 // We have to assume that it'll be ok. |
125 TPtr8 ptr( reinterpret_cast< TUint8* >( NULL ), 0 ); |
119 TPtr8 ptr( reinterpret_cast< TUint8* >( NULL ), 0 ); |
126 TBool errFound = EFalse; |
120 TBool errFound = EFalse; |
127 for (TUint i=0; ( (i < KNumPtrs) && !errFound ); i++) |
121 for ( TUint i = 0; ( ( i < KNumPtrs ) && !errFound ); i++ ) |
128 { |
122 { |
129 err = iPtrArray.Append( ptr ); |
123 err = iPtrArray.Append( ptr ); |
130 if ( err != KErrNone ) |
124 if ( err != KErrNone ) |
131 { |
125 { |
132 MPMLOGSTRING2( |
126 MPMLOGSTRING2( "RMPM::Connect - Error <%i> in ptrArray Append", err ) |
133 "RMPM::Connect - Error <%i> in ptrArray Append", err ) |
|
134 errFound = ETrue; |
127 errFound = ETrue; |
135 } |
128 } |
136 } |
129 } |
137 // If everything is fine, set client connected to true. |
130 // If everything is fine, set client connected to true. |
138 if ( err == KErrNone ) |
131 if ( err == KErrNone ) |
139 { |
132 { |
140 iConnected = ETrue; |
133 iConnected = ETrue; |
141 } |
134 } |
142 // Else close the created session. |
135 // Else close the created session. |
143 else |
136 else |
144 { |
137 { |
145 Close(); |
138 Close(); |
146 } |
139 } |
147 } |
140 } |
148 } |
141 } |
149 else |
142 else |
150 { |
143 { |
151 MPMLOGSTRING( "RMPM::Connect: Already connected to MPM Server" ) |
144 MPMLOGSTRING( "RMPM::Connect: Already connected to MPM Server" ) |
152 err = KErrNone; |
145 err = KErrNone; |
153 } |
146 } |
154 |
147 |
155 // Finally, always complete the failing connects |
148 // Finally, always complete the failing connects. |
156 if ( err != KErrNone ) |
149 if ( err != KErrNone ) |
157 { |
150 { |
158 TRequestStatus* status = &aStatus; |
151 TRequestStatus* status = &aStatus; |
159 User::RequestComplete( status, err ); |
152 User::RequestComplete( status, err ); |
160 } |
153 } |
161 } |
154 } |
162 |
|
163 |
|
164 |
155 |
165 // ----------------------------------------------------------------------------- |
156 // ----------------------------------------------------------------------------- |
166 // RMPM::ChooseBestIAP |
157 // RMPM::ChooseBestIAP |
167 // ----------------------------------------------------------------------------- |
158 // ----------------------------------------------------------------------------- |
168 // |
159 // |