vpnengine/eventmediatorapi/src/EventMediatorAPI.cpp
branchRCL_3
changeset 44 735de8341ce4
parent 0 33413c0669b9
child 49 5960d2d03390
equal deleted inserted replaced
41:e06095241a65 44:735de8341ce4
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 #include <e32std.h>
    19 #include <e32std.h>
    20 #include "eventmediator.h"
    20 #include "eventmediatorclientservercommon.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;
    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     {