43 * value: error |
43 * value: error |
44 * |
44 * |
45 *----------------------------------------------------------*/ |
45 *----------------------------------------------------------*/ |
46 EXPORT_C TInt REventMediator::Connect(void) |
46 EXPORT_C TInt REventMediator::Connect(void) |
47 { |
47 { |
|
48 static const TUint KMaxRetryCount = 2; |
48 TInt ret = KErrNone; |
49 TInt ret = KErrNone; |
49 TRAP(ret, CreateListenedEventsListL()); |
50 TRAP(ret, CreateListenedEventsListL()); |
50 if (ret != KErrNone) |
51 if (ret == KErrNone) |
51 { |
52 { |
52 return ret; |
53 for (TUint i = 0; i < KMaxRetryCount; i++) |
53 } |
54 { |
54 |
55 ret = CreateSession(KEventMediatorServer, |
55 TInt retry=2; |
56 TVersion(KEventMediatorMajorVersionNumber, |
56 for (;;) |
57 KEventMediatorMinorVersionNumber, |
57 { |
58 KEventMediatorBuildVersionNumber), |
58 TInt r=CreateSession(KEventMediatorServer, |
59 2 * KDefaultMessageSlots); |
59 TVersion(KEventMediatorMajorVersionNumber, |
60 |
60 KEventMediatorMinorVersionNumber, |
61 if ( ret == KErrNotFound ) |
61 KEventMediatorBuildVersionNumber), |
62 { |
62 2 * KDefaultMessageSlots); |
63 //do nothing |
63 |
64 } |
64 if (r!=KErrNotFound && r!=KErrServerTerminated) |
65 else if ( ret == KErrServerTerminated ) |
65 return r; |
66 { |
66 if (--retry==0) |
67 //Wait for one second so that the Eventmed |
67 return r; |
68 //and sit has sufficient time to go down. |
68 r = Launcher::LaunchServer(KEventMediatorServer, KEventMediatorFile, |
69 User::After(500000); |
69 KEventMediatorUid3); |
70 } |
70 |
71 else |
71 if (r!=KErrNone && r!=KErrAlreadyExists) |
72 { |
72 return r; |
73 break; |
73 } |
74 } |
|
75 |
|
76 ret = Launcher::LaunchServer(KEventMediatorServer, KEventMediatorFile, |
|
77 KEventMediatorUid3); |
|
78 |
|
79 if ( ret != KErrNone && ret !=KErrAlreadyExists) |
|
80 { |
|
81 break; |
|
82 } |
|
83 } |
|
84 } |
|
85 return ret; |
74 } |
86 } |
75 |
87 |
76 void REventMediator::CreateListenedEventsListL() |
88 void REventMediator::CreateListenedEventsListL() |
77 { |
89 { |
78 iListenedEvents = new (ELeave) CArrayFixFlat<CEventListener*>(1); |
90 iListenedEvents = new (ELeave) CArrayFixFlat<CEventListener*>(1); |
106 |
118 |
107 if(status==KErrNone) |
119 if(status==KErrNone) |
108 { |
120 { |
109 LOG(Log::Printf(_L("REventMediator::ListenToEvent(TEventType aType, MEventObserver& aObserver) - calling SendReceive\n"))); |
121 LOG(Log::Printf(_L("REventMediator::ListenToEvent(TEventType aType, MEventObserver& aObserver) - calling SendReceive\n"))); |
110 |
122 |
111 SendReceive(CEventMediatorSession::KEventMediatorListen, |
123 SendReceive(KEventMediatorListen, |
112 TIpcArgs(aType, |
124 TIpcArgs(aType, |
113 &(listener->iDataLengthPckg), |
125 &(listener->iDataLengthPckg), |
114 &(listener->iSrvDataPtrPckg)), |
126 &(listener->iSrvDataPtrPckg)), |
115 listener->iStatus); |
127 listener->iStatus); |
116 |
128 |
139 |
151 |
140 if(status==KErrNone) |
152 if(status==KErrNone) |
141 { |
153 { |
142 LOG(Log::Printf(_L("REventMediator::ListenToEvent(TEventType aType, TDesC8& aEventSpec, MEventObserver& aObserver) - calling SendReceive\n"))); |
154 LOG(Log::Printf(_L("REventMediator::ListenToEvent(TEventType aType, TDesC8& aEventSpec, MEventObserver& aObserver) - calling SendReceive\n"))); |
143 |
155 |
144 SendReceive(CEventMediatorSession::KEventMediatorListenWithSpec, |
156 SendReceive(KEventMediatorListenWithSpec, |
145 TIpcArgs(aType, |
157 TIpcArgs(aType, |
146 &(listener->iDataLengthPckg), |
158 &(listener->iDataLengthPckg), |
147 &(listener->iSrvDataPtrPckg), |
159 &(listener->iSrvDataPtrPckg), |
148 listener->iSpecBuf), |
160 listener->iSpecBuf), |
149 listener->iStatus); |
161 listener->iStatus); |
196 } |
208 } |
197 } |
209 } |
198 |
210 |
199 EXPORT_C TInt REventMediator::ReportEvent(TEventType aType) |
211 EXPORT_C TInt REventMediator::ReportEvent(TEventType aType) |
200 { |
212 { |
201 return SendReceive(CEventMediatorSession::KEventMediatorReportEvent, TIpcArgs(aType, 0, NULL)); |
213 return SendReceive(KEventMediatorReportEvent, TIpcArgs(aType, 0, NULL)); |
202 } |
214 } |
203 |
215 |
204 EXPORT_C TInt REventMediator::ReportEvent(TEventType aType, TDesC8& aData) |
216 EXPORT_C TInt REventMediator::ReportEvent(TEventType aType, TDesC8& aData) |
205 { |
217 { |
206 return SendReceive(CEventMediatorSession::KEventMediatorReportEvent, TIpcArgs(aType, aData.Length(), &aData)); |
218 return SendReceive(KEventMediatorReportEvent, TIpcArgs(aType, aData.Length(), &aData)); |
207 } |
219 } |
208 |
220 |
209 EXPORT_C TInt REventMediator::ReportEvent(TEventType aType, TDesC8& aEventSpec, TDesC8& aData) |
221 EXPORT_C TInt REventMediator::ReportEvent(TEventType aType, TDesC8& aEventSpec, TDesC8& aData) |
210 { |
222 { |
211 return SendReceive(CEventMediatorSession::KEventMediatorReportEventWithSpec, TIpcArgs(aType, aData.Length(), &aData, &aEventSpec)); |
223 return SendReceive(KEventMediatorReportEventWithSpec, TIpcArgs(aType, aData.Length(), &aData, &aEventSpec)); |
212 } |
224 } |
213 |
225 |
214 EXPORT_C TInt REventMediator::ReportLogEvent(TUid& aSrc, TLogCategory aCategory, TUint aMsgId, TInt aDesCount,...) |
226 EXPORT_C TInt REventMediator::ReportLogEvent(TUid& aSrc, TLogCategory aCategory, TUint aMsgId, TInt aDesCount,...) |
215 { |
227 { |
216 VA_LIST list; |
228 VA_LIST list; |
262 EXPORT_C TInt REventMediator::NewEventSpecId() |
274 EXPORT_C TInt REventMediator::NewEventSpecId() |
263 { |
275 { |
264 TInt specId = 0; |
276 TInt specId = 0; |
265 TPckg<TInt> specIdDes(specId); |
277 TPckg<TInt> specIdDes(specId); |
266 |
278 |
267 SendReceive(CEventMediatorSession::KEventMediatorNewEventSpecId, TIpcArgs(&specIdDes)); |
279 SendReceive(KEventMediatorNewEventSpecId, TIpcArgs(&specIdDes)); |
268 |
280 |
269 return specId; |
281 return specId; |
270 } |
282 } |
271 |
283 |
272 void REventMediator::CancelListenToEvent(TEventType aType) |
284 void REventMediator::CancelListenToEvent(TEventType aType) |
273 { |
285 { |
274 LOG(Log::Printf(_L("REventMediator::CancelListenToEvent(TEventType aType)\n"))); |
286 LOG(Log::Printf(_L("REventMediator::CancelListenToEvent(TEventType aType)\n"))); |
275 |
287 |
276 SendReceive(CEventMediatorSession::KEventMediatorCancel, TIpcArgs(aType)); |
288 SendReceive(KEventMediatorCancel, TIpcArgs(aType)); |
277 } |
289 } |
278 |
290 |
279 TInt REventMediator::CancelListenToEvent(TEventType aType, TDesC8& aEventSpec) |
291 TInt REventMediator::CancelListenToEvent(TEventType aType, TDesC8& aEventSpec) |
280 { |
292 { |
281 LOG(Log::Printf(_L("REventMediator::CancelListenToEvent(TEventType aType, TDesC8& aEventSpec)\n"))); |
293 LOG(Log::Printf(_L("REventMediator::CancelListenToEvent(TEventType aType, TDesC8& aEventSpec)\n"))); |
282 |
294 |
283 return SendReceive(CEventMediatorSession::KEventMediatorCancelWithSpec, TIpcArgs(aType, NULL, NULL, &aEventSpec)); |
295 return SendReceive(KEventMediatorCancelWithSpec, TIpcArgs(aType, NULL, NULL, &aEventSpec)); |
284 } |
296 } |
285 |
297 |
286 TInt REventMediator::FetchData(TAny* aSrvPtr, TDes8& aDataPtr) |
298 TInt REventMediator::FetchData(TAny* aSrvPtr, TDes8& aDataPtr) |
287 { |
299 { |
288 LOG(Log::Printf(_L("REventMediator::FetchData()\n"))); |
300 LOG(Log::Printf(_L("REventMediator::FetchData()\n"))); |
289 |
301 |
290 TRequestStatus status; |
302 TRequestStatus status; |
291 SendReceive(CEventMediatorSession::KEventMediatorFetchData, |
303 SendReceive(KEventMediatorFetchData, |
292 TIpcArgs(aSrvPtr, &aDataPtr), status); |
304 TIpcArgs(aSrvPtr, &aDataPtr), status); |
293 User::WaitForRequest(status); |
305 User::WaitForRequest(status); |
294 |
306 |
295 LOG_1("REventMediator::FetchData() - SendReceive called, status: %d\n",status.Int()); |
307 LOG_1("REventMediator::FetchData() - SendReceive called, status: %d\n",status.Int()); |
296 return status.Int(); |
308 return status.Int(); |
373 return KErrNone; |
385 return KErrNone; |
374 } |
386 } |
375 |
387 |
376 EXPORT_C TInt REventMediator::DeletePrivateFiles() |
388 EXPORT_C TInt REventMediator::DeletePrivateFiles() |
377 { |
389 { |
378 return SendReceive (CEventMediatorSession::KEventMediatorDeletePrivateFiles, TIpcArgs()); |
390 return SendReceive (KEventMediatorDeletePrivateFiles, TIpcArgs()); |
379 } |
391 } |
380 |
392 |
381 |
393 |
382 EXPORT_C TInt REventMediator::GetEventLogSize(TInt& aEventLogSize) |
394 EXPORT_C TInt REventMediator::GetEventLogSize(TInt& aEventLogSize) |
383 { |
395 { |
384 TPckg<TInt> eventLogSizePckg(aEventLogSize); |
396 TPckg<TInt> eventLogSizePckg(aEventLogSize); |
385 |
397 |
386 return SendReceive (CEventMediatorSession::KEventMediatorGetEventLogSize, |
398 return SendReceive (KEventMediatorGetEventLogSize, |
387 TIpcArgs(&eventLogSizePckg)); |
399 TIpcArgs(&eventLogSizePckg)); |
388 } |
400 } |
389 |
401 |
390 EXPORT_C TInt REventMediator::GetEventLogHeader(TDes8& aEventLogHeader) |
402 EXPORT_C TInt REventMediator::GetEventLogHeader(TDes8& aEventLogHeader) |
391 { |
403 { |
392 return SendReceive (CEventMediatorSession::KEventMediatorGetEventLogHeader, |
404 return SendReceive (KEventMediatorGetEventLogHeader, |
393 TIpcArgs(&aEventLogHeader)); |
405 TIpcArgs(&aEventLogHeader)); |
394 } |
406 } |
395 |
407 |
396 EXPORT_C TInt REventMediator::GetEventLogData(TDes8& aEventLogData) |
408 EXPORT_C TInt REventMediator::GetEventLogData(TDes8& aEventLogData) |
397 { |
409 { |
398 return SendReceive (CEventMediatorSession::KEventMediatorGetEventLogData, |
410 return SendReceive (KEventMediatorGetEventLogData, |
399 TIpcArgs(&aEventLogData)); |
411 TIpcArgs(&aEventLogData)); |
400 } |
412 } |
401 |
413 |
402 EXPORT_C TInt REventMediator::ClearEventLog() |
414 EXPORT_C TInt REventMediator::ClearEventLog() |
403 { |
415 { |
404 return SendReceive (CEventMediatorSession::KEventMediatorClearEventLog, TIpcArgs()); |
416 return SendReceive (KEventMediatorClearEventLog, TIpcArgs()); |
405 } |
417 } |
406 |
418 |
407 |
419 |
408 void CEventListener::DoCancel() |
420 void CEventListener::DoCancel() |
409 { |
421 { |