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